为什么无法创建名称为“InternetSpeedTest_11/24/21.csv”的文件?
问题产生原因
核心问题出在日期格式化的参数选择上:
strftime("%D")是%m/%d/%y的简写,生成的日期字符串会携带斜杠/,比如示例中的11/24/21- 斜杠在所有主流操作系统中都是默认的路径层级分隔符,系统会把你生成的文件名
InternetSpeedTest_11/24/21.csv解析为「InternetSpeedTest_11目录下的24子目录中的21.csv文件」,因为这两层目录都不存在,所以无论你用相对路径还是绝对路径,都会抛出找不到文件的错误。
修复方案
只需要把日期格式化参数替换为不含路径分隔符的格式即可,推荐使用%Y%m%d(紧凑无分隔)或者%Y-%m-%d(短横线分隔易读),同时可以顺便修正原代码中错误的导入写法。
修正后的完整代码如下:
from os.path import exists from datetime import datetime data = "example data,123.456" # 替换日期格式为不含斜杠的形式 filename = 'InternetSpeedTest_' + datetime.now().strftime("%Y-%m-%d") + '.csv' if exists(filename): with open(filename, 'a+', encoding='utf-8') as f: f.write('\n' + data) else: with open(filename, 'w+', encoding='utf-8') as f: f.write(data)
补充优化:原代码中读取文件开头后再追加写入的逻辑没有实际作用,已经简化为直接追加写入,同时添加了encoding参数避免不同系统下的编码乱码问题。
内容的提问来源于stack exchange,提问作者Andrew M
相关产品推荐
相关产品推荐

