2017-04-02 4 views
0

Windows7 64 비트에서 새 위치로 파일을 복사하고 싶습니다. 그러나 shutil.copy2를 사용할 때 파일 이름에 몇 가지 특수 문자가 오류 22가 발생할 수 있음을 발견했습니다 (그러나이 파일은 Windows GUI에서는 유효하고 마우스로 복사 할 수 있음). error22는이 파일 이름을 인용하여 소스 파일을 찾을 수 없음을 의미합니다. 따라서 제 해결 방법은 windows7 64 비트에서이 문제를 일으키는 파일 이름의 특수 문자를 제거하거나 대체하는 것입니다. 일반적으로 사용자는 다른 폴더에서이 폴더로 파일을 복사하여 파일 이름을 상수가 아닌 일부 varables에서 처리해야합니다. 그러나 예제로, 예제 코드에 두 개의 파일 이름을 넣었습니다. 나는 그림과 같이 코드를 넣어 :파이썬 대체 특수 문자

# -*- 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] 

내가 그 한 번«

같은 일부 특수 문자가 심지어 파이썬 스크립트를 사용하여 이름을 바꿀 수 없습니다 의미한다고 생각

있어
+0

감사 kmario23과 디렉토리에있는 파일의 목록을 얻을 것이 있던

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

fomat을 개선하기 위해 편집 –

+0

이 질문은 원래 질문의 해결 방법에 대한 것입니다 [link] (http://stackoverflow.com/questions/42) 804167/copy-files-strange-name-in-python-got-error-22). 그래서 그게 해결 될 수 있다면,이 질문은이 목적을 위해 존재하지 않습니다. –

+0

[가능한 모든 특수 문자, 문장 부호 및 공백을 문자열에서 제거하십시오] (http://stackoverflow.com/questions/5843518/remove-all-special- characters-punctuation-and-spaces-from-string) – wwii

답변

0

그래서 파일 이름의 패턴과 일치하는 정규 표현식을 만드는 것처럼 보이지만 이미 이름을 알고 있습니까?

특수 문자를 말할 때 특히 공백에 관해 말하고 있습니까?

여기에 읽기 쉽도록 코드입니다 : 검사가, 내가 힘든 시간을 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) 
+0

일부 구문 오류가 있습니다. 주로 인용문 – abccd

+0

그 파이썬은 제 맥에서 작동합니다. 무슨 뜻인지 모르겠다. –

+0

따옴표가 "아닙니다" – abccd