亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于Python中的文件io

關于Python中的文件io

POPMUISE 2023-10-18 21:15:55
我錯誤地輸入了以下代碼:f = open('\TestFiles\'sample.txt', 'w')f.write('I just wrote this line')f.close()我運行了這段代碼,即使我錯誤地輸入了上面的代碼,它仍然是一個有效的代碼,因為第二個反斜杠忽略了單引號,據我所知,我應該得到的是一個名為“\TestFiles”的 .txt 文件示例”在我的項目文件夾中。但是,當我導航到項目文件夾時,我在那里找不到文件。但是,例如,如果我使用不同的文件名執行相同的操作。喜歡,f = open('sample1.txt', 'w')f.write('test')f.close()我發現在我的文件夾中創建了“sample.txt”文件。即使據我所知第一個代碼是有效的,是否有原因導致文件沒有被創建?還有一種方法可以提及相對于我的項目文件夾的文件,而不是提及文件的絕對路徑?(例如,我想在項目文件夾內名為“TestFiles”的文件夾中創建一個名為“sample.txt”的文件。因此,在不提及 TestFiles 文件夾的絕對路徑的情況下,有沒有辦法提及 TestFiles 文件夾相對于打開文件時Python中的項目文件夾?)我是Python的初學者,希望有人能幫助我。
查看完整描述

3 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

您正在尋找的是相對路徑,長話短說,如果您想在項目文件夾內的“TestFiles”文件夾中創建一個名為“sample.txt”的文件,您可以執行以下操作:

import os


f = open(os.path.join('TestFiles', 'sample1.txt'), 'w')

f.write('test')

f.close()

或者使用更新的pathlib模塊:


from pathlib import Path


f = open(Path('TestFiles', 'sample1.txt'), 'w')

f.write('test')

f.close()

但您需要記住,這取決于您啟動 Python 解釋器的位置(這可能就是您無法在項目文件夾中找到“\TestFiles'sample”的原因,它是在其他地方創建的),以確保一切正常好吧,你可以這樣做:


from pathlib import Path


sample_path = Path(Path(__file__).parent, 'TestFiles', 'sample1.txt')


with open(sample_path, "w") as f:

? ? f.write('test')

通過使用[上下文管理器]{https://book.pythontips.com/en/latest/context_managers.html},您可以避免使用f.close()


查看完整回答
反對 回復 2023-10-18
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

創建文件時,您可以指定絕對文件名或相對文件名。如果文件路徑以“\”(在 Win 上)或“/”開頭,則它將是絕對路徑。因此,在第一種情況下,您指定了絕對路徑,實際上是:


from pathlib import Path


Path('\Testfile\'sample.txt').absolute()

WindowsPath("C:/Testfile'sample.txt")


每當你在 python 中運行一些代碼時,將生成的相對路徑將由你當前的文件夾組成,該文件夾是你啟動 python 解釋器的文件夾,你可以通過以下方式檢查:


import os

os.getcwd()

以及您之后添加的相對路徑,因此如果您指定:


Path('Testfiles\sample.txt').absolute()

WindowsPath('C:/Users/user/Testfiles/sample.txt')


一般來說,我建議您使用pathlib來處理路徑。這使得它更安全并且跨平臺。例如,假設您的憑證位于:


project

  src

    script.py

  testfiles

并且您想要存儲/讀取文件project/testfiles。script.py您可以做的是獲取with的路徑__file__并構建到的路徑project/testfiles


from pathlib import Path

src_path = Path(__file__)

testfiles_path = src_path.parent / 'testfiles'

sample_fname = testfiles_path / 'sample.txt'

with sample_fname.open('w') as f:

    f.write('yo')


查看完整回答
反對 回復 2023-10-18
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

當我在 vscode 中運行第一個代碼示例時,我收到一條警告 Anomalous backslash in string: '\T'. String constant might be missing an r prefix. ,當我運行該文件時,它還會創建一個名為\TestFiles'sample.txt. 它是在.py文件所在的同一目錄中創建的。

現在,如果你的工作樹是這樣的:

project_folder
    -testfiles
        -sample.txt
    -something.py

那么你可以說:open("testfiles//hello.txt")

我希望你覺得這對你有幫助。


查看完整回答
反對 回復 2023-10-18
  • 3 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號