![](/img/trans.png)
[英]FileNotFoundError when using os.rename() in Python
[英]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.