Hướng dẫn python open file for writing in different directory - mở tệp python để ghi trong thư mục khác

Tôi đã luôn bối rối về chủ đề của thư mục truyền tải trong Python và có một tình huống tôi tò mò: Tôi có một tệp mà tôi muốn truy cập trong một thư mục về cơ bản song song với bản mà tôi hiện đang tham gia. Đưa ra cấu trúc thư mục này:

\parentDirectory
    \subfldr1
        -testfile.txt
    \subfldr2
        -fileOpener.py

Tôi đang cố gắng tập lệnh trong FileOpener.py để thoát khỏi subfldr2, vào subfldr1 và sau đó gọi Open [] trên testfile.txt.

Từ việc duyệt Stackoverflow, tôi đã thấy mọi người sử dụng

path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]
2 và
path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]
3 để thực hiện điều này, nhưng tôi chỉ tìm thấy các ví dụ về các tệp trong các thư mục con bên dưới nguồn gốc của tập lệnh.

Làm việc về điều này, tôi nhận ra rằng tôi chỉ có thể chuyển tập lệnh vào subfldr1 và sau đó tất cả sẽ ổn, nhưng sự tò mò của tôi được khơi gợi về việc điều này sẽ được thực hiện như thế nào.

Chỉnh sửa: Câu hỏi này đặc biệt liên quan đến máy Windows, vì tôi không biết làm thế nào các chữ cái và dấu gạch chéo ngược sẽ chủ yếu vào vấn đề này.

Đã hỏi ngày 9 tháng 9 năm 2015 lúc 3:42Sep 9, 2015 at 3:42

Dbishopdbishopdbishop

8202 Huy hiệu vàng8 Huy hiệu bạc13 Huy hiệu đồng2 gold badges8 silver badges13 bronze badges

4

Nếu bạn biết đường dẫn đầy đủ đến tệp, bạn chỉ có thể làm điều gì đó tương tự như thế này. Tuy nhiên, nếu bạn đặt câu hỏi trực tiếp liên quan đến các con đường tương đối, mà tôi không quen thuộc và sẽ phải nghiên cứu và kiểm tra.

path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]

Edit:

Đây là một cách để làm điều đó tương đối thay vì tuyệt đối. Không chắc chắn nếu điều này hoạt động trên Windows, bạn sẽ phải kiểm tra nó.

import os

cur_path = os.path.dirname[__file__]

new_path = os.path.relpath['..\\subfldr1\\testfile.txt', cur_path]
with open[new_path, 'w'] as f:
    f.write[data]

EDIT 2: Một lưu ý nhanh về

path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]
4, điều này sẽ không hoạt động trong trình thông dịch tương tác do nó được chạy tương tác và không phải từ một tệp thực tế. One quick note about
path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]
4, this will not work in the interactive interpreter due it being ran interactively and not from an actual file.

Đã trả lời ngày 9 tháng 9 năm 2015 lúc 3:44Sep 9, 2015 at 3:44

Jared Mackeyjared MackeyJared Mackey

3,8574 Huy hiệu vàng30 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges30 silver badges50 bronze badges

6

from pathlib import Path

data_folder = Path["source_data/text_files/"]
file_to_open = data_folder / "raw_data.txt"

f = open[file_to_open]
print[f.read[]]

Đã trả lời ngày 7 tháng 7 năm 2018 lúc 22:45Jul 7, 2018 at 22:45

0

Điều này được áp dụng tại thời điểm trả lời, tháng 9 năm 2015

import os
import os.path
import shutil

Bạn tìm thấy thư mục hiện tại của mình:

d = os.getcwd[] #Gets the current working directory

Sau đó, bạn thay đổi một thư mục lên:

os.chdir[".."] #Go up one directory from working directory

Sau đó, bạn có thể nhận được một danh sách/danh sách của tất cả các thư mục, cho một thư mục lên:

o = [os.path.join[d,o] for o in os.listdir[d] if os.path.isdir[os.path.join[d,o]]] # Gets all directories in the folder as a tuple

Sau đó, bạn có thể tìm kiếm tuple cho thư mục bạn muốn và mở tệp trong thư mục đó:

for item in o:
    if os.path.exists[item + '\\testfile.txt']:
    file = item + '\\testfile.txt'

Sau đó, bạn có thể thực hiện stuf với toàn bộ đường dẫn tệp 'tệp'

Đã trả lời ngày 9 tháng 9 năm 2015 lúc 4:01Sep 9, 2015 at 4:01

RoanroanRoan

87215 Huy hiệu bạc26 Huy hiệu đồng15 silver badges26 bronze badges

import os

main_path = os.path.dirname[__file__]
file_path = os.path.join[main_path, 'subfldr1\\testfile.txt']
f = open[file_path]

Đã trả lời ngày 8 tháng 7 lúc 2:50Jul 8 at 2:50

1

Tôi nghĩ rằng cách đơn giản nhất để tìm kiếm một tệp trong một thư mục khác là:

path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]
0

Với

path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]
5, bạn có thể quay lại nhiều thư mục như bạn muốn mà không cần viết "../../../"

Ở đây, tôi có kiến ​​trúc sau:

path = 'C:\\Users\\Username\\Path\\To\\File'

with open[path, 'w'] as f:
    f.write[data]
1

Đã trả lời ngày 12 tháng 8 lúc 18:50Aug 12 at 18:50

Bài Viết Liên Quan

Chủ Đề