Python 如何修复erroos.rename()错误[WinError 123]文件名、目录名或卷标语法不正确
我正在尝试重命名文件并将日期时间附加到文件名:Python 如何修复erroos.rename()错误[WinError 123]文件名、目录名或卷标语法不正确,python,docker,operating-system,rename,Python,Docker,Operating System,Rename,我正在尝试重命名文件并将日期时间附加到文件名: 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 n
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映像中重命名它吗?但我想datetime部分会更复杂。我已经挣扎了整整一周了。有人能帮我提前谢谢吗。可能是冒号的问题。 替换: 当前日期=datetime.datetime.today().strftime(“%Y\u%m\u%d\u%H:%m:%S”) 与: 当前日期=datetime.datetime.today().strftime(“%Y\u%m\u%d\u%H\u%m\u%S”)
理想情况下,文件名中不应该有冒号或空格。可能的问题是冒号。 替换: 当前日期=datetime.datetime.today().strftime(“%Y\u%m\u%d\u%H:%m:%S”) 与: 当前日期=datetime.datetime.today().strftime(“%Y\u%m\u%d\u%H\u%m\u%S”)
理想情况下,文件名中不应该有冒号或空格。谢谢,这解决了问题。只是一个小的后续问题,如果我不想在代码中包含我的本地路径(我可以在docker中重命名它吗?),我还可以使用哪些其他方法?您可以使用相对路径而不是显式路径,例如“/test/test.csv”来使用上面的文件夹,或者“/test/test.csv”来使用路径中当前位置上方的两个文件夹,但是我如何在将来的代码中引用这个新文件名,目前它们是用以前的名称硬编码的,但是由于我附加了当前的日期时间,我不能再硬编码更改的日期时间了。使用open('./test/test.csv',newline='')将csv导入为csvfile:spamreader=csv.reader(csvfile,delimiter='',quotechar='.'))对于spamreader中的行:print(“,”.join(row))谢谢,这解决了问题。只是一个小的后续问题,如果我不想在代码中包含我的本地路径(我可以在docker中重命名它吗?),我还可以使用哪些其他方法?您可以使用相对路径而不是显式路径,例如“/test/test.csv”来使用上面的文件夹,或者“/test/test.csv”来使用路径中当前位置上方的两个文件夹,但是我如何在将来的代码中引用这个新文件名,目前它们是用以前的名称硬编码的,但是由于我附加了当前的日期时间,我不能再硬编码更改的日期时间了。使用open('./test/test.csv',newline='')将csv导入为csvfile:spamreader=csv.reader(csvfile,delimiter='',quotechar='.'))对于spamreader中的行:打印(“,”.join(行))