我想将文件复制到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