我想將文件複製到Windows7 64位的新位置。但是在使用shutil.copy2時,我發現文件名中的一些特殊字符會導致錯誤22(但是這個文件在Windows GUI中是合法的,並且可以用鼠標進行復制)。我相信error22意味着通過引用此文件名無法找到源文件。所以我的解決方法是刪除或替換任何文件名中的特殊字符,這會導致windows7 64bit中出現此問題。一般情況下,用戶不斷將文件從其他文件夾複製到此文件夾,因此文件名必須由一些可變參數而不是常量處理。但作爲一個例子,我只是在示例代碼中放置了兩個文件名。我把圖片中顯示的代碼:python替換特殊字符
# -*- coding: gbk*-
#!/usr/bin/python
#Filename:ae.py
import os,shutil,time,re,string,sys #re is regular expression
from nt import chdir
import win32api,win32file
import unicodedata,codecs
scr=r"C:\Users\Administrator\Desktop\« How-To Geek Forums.pdf"
des="C:\\Users\\Administrator\\Desktop\\How-To Geek Forums.pdf"
#chdir(os.path.dirname(scr))
os.rename(scr,des)
和我
WindowsError:[Error 123]
我認爲,這意味着使用Python腳本我甚至無法對其進行重命名,一旦有像«
一些特殊字符
感謝kmario23,我有困難時期編輯以改善fomat –
這個問題是關於在另一個問題中提出的原始問題的解決方法[link](http://stackoverflow.com/questions/42 804167 /複製文件與 - 奇怪的名字 - 在 - python的 - 有錯誤-22)。所以,如果可以解決這個問題,這個問題不存在這個目的 –
可能重複的[從字符串中刪除所有特殊字符,標點符號和空格](http://stackoverflow.com/questions/5843518/remove-all-special- characters-punctuation-and-spaces-from-string) – wwii