Python中的FileNotFoundError,文件名末尾有句点。

6
我有一个奇怪的问题。我既不能重命名特定的文件,也不能删除它们。我遇到了“FileNotFoundError”错误。
之前已经有类似的问题被问过了。解决这个问题的方法是使用完整的路径而不仅仅是文件名。
我的脚本之前只使用文件名就能正常工作,但是使用不同的文件时,即使使用完整路径也会出现这个错误。
看起来文件名是导致错误的原因,但我无法解决它。
import os

cwd = os.getcwd()
    
file = "003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3."
change = "student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3."

oldname = os.path.join(cwd,file)
newname = os.path.join(cwd,change)

print(file in os.listdir())
print(os.path.isfile(file))
os.rename(oldname, newname)

我得到以下输出:

True
False
Traceback (most recent call last):
  File "C:\Users\X\Desktop\code\sub\test.py", line 13, in <module>
    os.rename(oldname, newname)
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden: 'C:\\Users\\X\\Desktop\\code\\sub\\003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.' -> 'C:\\Users\\X\\Desktop\\code\\sub\\student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.'
[Finished in 0.4s with exit code 1]

如果我在文件夹中使用Windows搜索,这个文件是存在的。 如果我尝试使用完整路径,我也会得到一个Windows错误,找不到该文件。

我还尝试将Unicode字符串u''+文件名附加到字符串中,因为有用户建议这样做。

2个回答

1

这是一个与Windows/Python相关的问题。带有尾部句点的文件名有时会被截断。

如果这只是一次性的任务,您可以使用两个尾随句点作为解决方法。


谢谢!确实是末尾的句点导致了文件名截取。 - Ali

-3

这并不是一个确切的答案(我没有足够的声望),但是...

两个想法:

A)这些文件名是否应该以句点结尾?

B)您可以在此处使用正斜杠(即C:/.../.../...)而不是转义反斜杠。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接