【问题标题】:How can I fix erroos.rename() error [WinError 123] The filename, directory name, or volume label syntax is incorrect如何修复 erroos.rename() 错误 [WinError 123] 文件名、目录名或卷标语法不正确
【发布时间】:2020-07-30 19:25:09
【问题描述】:

我正在尝试重命名文件并将日期时间附加到文件名:

current_date = datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')

os.rename(r'C:\Users\xxx\test.csv',
          r'C:\Users\xxx\test__' + str(current_date) + '.csv')

错误:

OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect

我也试过了:

current_date = datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')

old = 'C:/Users/xxx/test.csv'
new = 'C:/Users/xxx/test_' + str(current_date) + '.csv'
os.rename(old, new)

还是出现同样的错误,谁能帮帮我。这个脚本将在 docker 容器中运行,我怀疑如果我不能重命名本地文件,我可以在 docker 映像中重命名它吗?但我认为日期时间部分会更复杂。我已经挣扎了整整一个星期。有人可以帮我提前谢谢。

【问题讨论】:

    标签: python docker operating-system rename


    【解决方案1】:

    冒号是可能的问题。 替换:

    current_date = datetime.datetime.today().strftime('%Y_%m_%d_%H:%M:%S')

    与:

    current_date = datetime.datetime.today().strftime('%Y_%m_%d_%H_%M_%S')

    理想情况下,文件名中不应包含冒号或空格。

    【讨论】:

    • 谢谢,这解决了问题。只是一个小的后续问题,如果我不想在代码中包含我的本地路径,我可以使用哪些其他方法(我可以在 docker 中重命名它吗?)
    • 您可以使用相对路径而不是显式路径,例如“./test/test.csv”使用上面的文件夹或“../test/test.csv”用于当前文件夹上方的两个文件夹在目录路径中的位置
    • 嗯,它可以工作,但是我如何在以后的代码中引用这个新文件名,目前它们是用以前的名称硬编码的,但是由于我附加了当前的日期时间,我不能硬编码更改日期时间了。
    • 导入 csv with open('./test/test.csv', newline='') as csvfile: spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')对于垃圾邮件阅读器中的行: print(', '.join(row))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2021-01-07
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    相关资源
    最近更新 更多