Python3.6新子目录创建CSV:路径变量引发FileNotFoundError
搞定你的CSV文件创建问题!
嘿,我一眼就瞅出你遇到的问题啦!你收到的FileNotFoundError根本不是路径里的反斜杠的锅——os.path.join()只是帮你生成了路径字符串,但它不会自动帮你创建这个路径里的目录!你代码里拼出了Logs\14-05-2018这样的目录路径,但从来没实际创建过这个文件夹,所以open()函数自然找不到地方写文件啦。
第一步:先把目录建起来
在打开文件之前,你得先调用os.makedirs()来创建需要的目录(包括嵌套的子目录),代码改这样:
import csv, os, time # 注意你之前漏了导入time模块,补上! # 获取CSV文件名 logFN = input("Please name your trade.\n#") suffix = '.csv' csvname = logFN + suffix # 生成目录路径 t = time.strftime("%d-%m-%Y-%H%M") dirsname = os.path.join('Logs', t) # 关键操作:创建目录,exist_ok=True确保目录已存在时不报错 os.makedirs(dirsname, exist_ok=True) # 拼接完整的CSV文件路径 csvlogPath = os.path.join(dirsname, csvname)
第二步:修复文件读写的模式错误
你后面的代码里用'w'模式打开文件去读取,这完全不对——'w'模式会清空文件并准备写入,根本读不到内容!而且你重复打开文件多次,也可以优化一下:
# 先写入CSV内容 with open(csvlogPath, 'w', newline='') as csvfile: # 加newline=''避免Windows下多出空行 filewriter = csv.writer(csvfile, delimiter=',', lineterminator='\n', quotechar='|', quoting=csv.QUOTE_MINIMAL) filewriter.writerow(['get', 'new', 'values', 'later']) # 再读取并处理CSV内容 with open(csvlogPath, 'r') as f: reader = csv.reader(f) rows = list(reader) # 一次性把所有行存下来,方便后续操作 rwsCount = len(rows) line_number = rwsCount - 1 # 打印每一行和计数 for idx, row in enumerate(rows): print(row, idx) print(f"最后一行索引:{line_number}") text = rows[line_number][0] print(f"最后一行第一个元素:{text}")
额外提醒
- 路径里的反斜杠
\是Windows系统正常的路径分隔符,os.path.join()会自动适配你的操作系统,完全不用纠结这个符号的问题。 - 别忘了导入
time模块,你之前的代码里用了time.strftime()但没导入,运行时会报错。
内容的提问来源于stack exchange,提问作者Goulouh Anwar
相关产品推荐
相关产品推荐

