[英]os.rename path error while moving file to subdirectory
我是python和編碼的新手。 我花了很多時間嘗試修復此錯誤,但我不知道該怎么做。 我有一個包含子文件夾的主文件夾,我想將文件從主文件夾移動到子文件夾。 應該可以通過os.rename
或shutil.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]系統找不到指定的路徑:'E:\\\\ folder \\\\ fname'->'E:\\\\ folder \\\\ subfolder \\\\ fname'
正確的路徑應該是單反斜線。 我正在使用Windows 8.1和python34。 誰能幫我這個。 我知道這個問題一定是重復的,但我無法理解自己在做什么錯。 shutil.move
生成類似的錯誤
雙反斜杠是正常的 ; 它們不是錯誤的原因。 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'
是換行符,但'\\\\n'
是反斜杠和字母n
。
您的錯誤出在其他地方; 很有可能尚未創建subfolder
; os.rename()
或shutil.move()
不會為您創建父文件夾。
您可以使用os.makedirs()
函數來確保創建路徑中的所有文件夾:
newdir = os.path.abspath('subfolder') # will use the current working directory
try:
# ensure that it exists
os.makedirs(newdir)
except OSError:
pass # it is already there
src = os.path.abspath(fname)
dst = os.path.join(newdir, fname)
os.rename(src, dst)
您還需要確保不要在文件名或子文件夾定義中意外使用單個反斜杠。 \\s
是不是一個有效的逃生,但其他人是有效的,可以產生意想不到的結果。 將定義路徑的字符串中的反斜杠加倍,或使用原始字符串文字 ,或改用正斜杠:
>>> '\new' # newline!
'\new'
>>> print '\new' # produces a blank line in between
ew
>>> '\\new'
'\\new'
>>> print '\\new'
\new
>>> r'\new'
'\\new'
>>> '/new'
'/new'
Windows接受正斜杠就可以了; 不管路徑分隔符是指向前還是指向后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.