python取代特殊字符

时间:2017-04-02 16:16:41

标签: python string character encode

我想将文件复制到windows7 64bit中的新位置。但是我发现文件名中的一些特殊字符在使用shutil.copy2时会导致错误22(但是这个文件在Windows GUI中是合法的,可以用鼠标复制)。我相信error22意味着通过引用此文件名无法找到源文件。所以我的解决方法是删除或替换任何文件名中的特殊字符,这在Windows7 64bit中会导致此问题。通常,用户会将文件从其他文件夹复制到此文件夹,因此文件名必须由某些可变处理而不是常量处理。但作为一个例子,我只是在示例代码中放了两个文件名。我把图中显示的代码:

# -*- 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脚本重命名它

1 个答案:

答案 0 :(得分:0)

所以,看起来你正在创建一个正则表达式来匹配文件名的模式,但你已经知道了这个名字?

当你说特殊字符时,你是否专门谈论空白?

以下是您的可读性代码:

#!/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)

结帐http://docs.python.org/library/os.html#os.listdir

我可能只是使用

获取目录中的文件列表
chdir(os.path.dirname(scr)
files = os.listdir(“.”)
for name in files:
    os.rename(name,des+”/“+name)