[英]Open File in Another Directory (Python)
我一直對 Python 中的目錄遍歷主題感到有些困惑,並且有一個我很好奇的情況:我有一個文件,我想在一個與我當前所在的目錄基本平行的目錄中訪問。鑒於此目錄結構:
\parentDirectory
\subfldr1
-testfile.txt
\subfldr2
-fileOpener.py
我正在嘗試在 fileOpener.py 中編寫腳本以退出 subfldr2,進入 subfldr1,然后在 testfile.txt 上調用 open()。
通過瀏覽 stackoverflow,我看到人們使用os
和os.path
來完成此操作,但我只找到了有關腳本源下的子目錄中的文件的示例。
在處理這個問題時,我意識到我可以將腳本重新定位到 subfldr1 中,然后一切都會好起來的,但我對如何完成這件事感到好奇。
編輯:這個問題特別適用於 Windows 機器,因為我不知道驅動器號和反斜杠會如何影響這一點。
如果您知道文件的完整路徑,則可以執行類似的操作。 但是,如果您的問題與相對路徑直接相關,我不熟悉並且必須進行研究和測試。
path = 'C:\\Users\\Username\\Path\\To\\File'
with open(path, 'w') as f:
f.write(data)
編輯:
這是一種相對而不是絕對的方法。 不確定這是否適用於Windows,您必須對其進行測試。
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)
編輯 2:關於__file__
的一個快速說明,這在交互式解釋器中不起作用,因為它是交互式運行的,而不是從實際文件中運行的。
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())
這適用於 2015 年 9 月回答時
import os
import os.path
import shutil
你找到你的當前目錄:
d = os.getcwd() #Gets the current working directory
然后你改變一個目錄:
os.chdir("..") #Go up one directory from working directory
然后你可以獲得所有目錄的元組/列表,對於一個目錄:
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
然后您可以在元組中搜索您想要的目錄並打開該目錄中的文件:
for item in o:
if os.path.exists(item + '\\testfile.txt'):
file = item + '\\testfile.txt'
然后你可以用完整的文件路徑'file'來做stuf
這是一個非常古老的問題,但我認為它會幫助正在學習 python 的新手排隊。 如果您有 Python 3.4 或更高版本,則 pathlib 庫帶有默認分發。
要使用它,您只需使用正斜杠將路徑或文件名傳遞給新的 Path() 對象,其余部分由它處理。 要指示路徑是原始字符串,請將r
放在帶有實際路徑的字符串前面。
例如,
from pathlib import Path
dataFolder = Path(r'D:\Desktop dump\example.txt')
來源: 在 Windows、Mac 和 Linux 上處理文件路徑的簡單方法
(unicode 錯誤)“unicodeescape”編解碼器無法解碼位置 2-3 中的字節:截斷 \UXXXXXXXX 轉義
這兩個也對我有用:
import os
path = os.path.join(os.getcwd(), 'subfldr1', r'testfile.txt')
# or
path = r'subfldr1\testfile.txt'
import os
main_path = os.path.dirname(__file__)
file_path = os.path.join(main_path, 'subfldr1\\testfile.txt')
f = open(file_path)
我認為在另一個文件夾中搜索文件的最簡單方法是:
from pathlib import Path
root_folder = Path(__file__).parents[1]
my_path = root_folder / "doc/foo.json"
with open(my_path, "r") as f:
data = json.load(f)
使用parents[i]
,您可以 go 返回任意數量的目錄,而無需編寫“../../../”
在這里,我有以下架構:
-> root
-> routes
myscript
-> doc
foo.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.