免责声明,我是编码和python的新手,因此满足初学者的需求将非常棒。我基本上是想通过调用CSV文件中的特定值来重命名目录。我可以打印我想要的新名称。添加os.rename(src,dst)函数后,我立即收到错误消息
FileNotFoundError:[错误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)
任何帮助将不胜感激。如果有办法使此代码更有效,请纠正错误的做法,或者有更好的方法,我欢迎您提出建议!
答案 0 :(得分:1)
src
从未更改,但您os.rename
多次(每个循环一次)。它可能在第一个电话中就已经存在,但肯定在第二个电话中不存在。
答案 1 :(得分:0)
如果我理解正确,您当前拥有:
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)