操作系统重命名将文件移动到子目录时出现路径错误

2024-10-02 02:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新的python和代码。我花了很多时间试图修复这个错误,但我不知道如何去做。我有一个包含子文件夹的主文件夹,我想将文件从主文件夹移动到子文件夹。这应该可以通过os.renameshutil.move轻松完成,但我无法修复此错误。下面是我正在使用的代码和我得到的错误。在

cdir=os.getcwd()
newdir=cdir+"\subfolder"
src=os.path.join(cdir, fname) 
dst=os.path.join(newdir, fname)
os.rename(src,dst)

错误显示目录路径中的双反斜杠,即

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'E:\\ folder\\fname' -> 'E:\\folder\\subfolder\\fname'

正确的路径应该是单反斜杠。我使用的是Windows8.1和python34。有人能帮我吗。我知道这个问题一定是重复的,但我不明白我做错了什么。使用shutil.move生成类似的错误


Tags: path代码src文件夹moveos错误fname
1条回答
网友
1楼 · 发布于 2024-10-02 02:27:38

双反斜杠正常;它们不是错误的原因。Python总是将字符串表示中的反斜杠加倍,这样您就可以安全地将该值复制到Python解释器中并重新生成确切的字符串:

>>> print 'E:\\folder\\fname' 
E:\folder\fname
>>> 'E:\\folder\\fname' 
'E:\\folder\\fname'
>>> value = 'E:\\folder\\fname' 
>>> value
'E:\\folder\\fname'
>>> print value
E:\folder\fname

Python这样做是因为在转义序列中使用了一个反斜杠;'\n'是一个换行符,而{}是一个反斜杠,而字母{}。在

您的错误在别处;很可能subfolder尚未创建;os.rename()或{}不会为您创建父文件夹。在

可以使用^{} function确保创建路径中的所有文件夹:

^{pr2}$

您还需要确保不会意外地在文件名或子文件夹定义中使用单个反斜杠;\s不是有效转义,但其他有效且可能产生意外结果。将定义路径的字符串中的反斜杠加倍,或使用原始字符串文本,或改用正斜杠:

>>> '\new'  # newline!
'\new'
>>> print '\new'  # produces a blank line in between

ew
>>> '\\new'
'\\new'
>>> print '\\new'
\new
>>> r'\new'
'\\new'
>>> '/new'
'/new'

Windows可以很好地接受正斜杠;它不在乎路径分隔符是向前还是向后。在

相关问题 更多 >

    热门问题