簡體   English   中英

FileNotFoundError 使用 os.rename 時,但在調用 print function 時沒有

[英]FileNotFoundError when using os.rename, but not when calling up print function

免責聲明,我對編碼和 python 非常陌生,所以滿足初學者的反應會很棒。 我基本上是在嘗試通過調用 CSV 文件中的特定值來重命名目錄。 我可以打印出我想要的新名稱。 一旦我添加 os.rename(src, dst) function 我得到錯誤

FileNotFoundError: [Errno 2] 沒有這樣的文件或目錄...

是的,我已經三次檢查了文件路徑是否有錯別字和錯誤。

我已在簡化版本中成功使用此代碼,而無需嘗試從 csv 重命名。

import os, csv

os.chdir("/Users/.../test11")
root = "/Users/.../test11"

for file in os.listdir(): #delete ds_store files b/c they mess up index value
    if file.endswith(".DS_Store"):
        path = os.path.join(root, file)
        os.remove(path)

src = "/Users/.../test11/temp_name" # rename (date/name/index)
csvFilePath = "/Users/.../test11/temp_name/data.csv"
with open(csvFilePath) as csvFile:
    csvReader = csv.DictReader(csvFile)
    for csvRow in csvReader:
        timestamp = csvRow["Timestamp"]
        name = csvRow["First name"]
        for index, folder in enumerate(os.listdir(root), start=1):
            new_folder_name = f"{timestamp}_{name}_{index}"
os.rename(src, new_folder_name)

任何幫助將非常感激。 如果有辦法讓這段代碼更高效,糾正不良做法,或者如果有更好的方法,我願意接受建議!

src永遠不會改變,但你os.rename它多次(每個循環一次)。 它可能存在第一個電話,但絕對不是第二個電話。

如果我理解正確,您目前擁有:

src = "/Users/.../test11/temp_name"

new_folder_name = f"{timestamp}_{name}_{index}"

我會說您缺少路徑“/Users/.../test11/”

也許這會解決你的問題?

new_folder_name = "/Users/.../test11/" + f"{timestamp}_{name}_{index}"


def create_path(x):
if not os.path.exists(x):
    os.makedirs(new_folder_name)

os.rename(src, new_folder_name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM