2017-04-02 4 views
0

Ich möchte die Datei an einen neuen Ort in Windows7 64bit kopieren. Aber ich finde einige Sonderzeichen im Dateinamen kann Fehler 22 verursachen, wenn Sie shuthil.copy2 verwenden (aber diese Datei ist legal in Windows GUI und kann mit der Maus kopiert werden). Ich glaube, der Fehler22 bedeutet, dass die Quelldatei nicht gefunden werden kann, indem dieser Dateiname zitiert wird. Meine Problemumgehung würde also sein, die Sonderzeichen in irgendeinem Dateinamen zu entfernen oder zu ersetzen, der dieses Problem in windows7 64bit verursacht. Im Allgemeinen kopiert der Benutzer Dateien aus anderen Ordnern in diesen Ordner, sodass der Dateiname von einigen Variablen und nicht von Konstanten gehandhabt werden muss. Aber als Beispiel gebe ich einfach zwei Dateinamen in den Beispielcode ein. Ich habe den Code im Bild gezeigt:Python ersetzen Sonderzeichen

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

und ich bekam

WindowsError:[Error 123] 

Ich denke, das bedeutet, dass ich es nicht einmal umbenennen einmal Python-Skript gibt es einige Sonderzeichen wie «sind

+0

dank kmario23, ich Mühe hatte, Bearbeiten, um den Fomat zu verbessern –

+0

Diese Frage bezieht sich auf die Problemumgehung der ursprünglichen Frage in einer anderen Frage [link] (http://stackoverflow.com/questions/42 804167/copy-files-with-seltsame-name-in-python-hat-error-22). Also, wenn das gelöst werden kann, existiert diese Frage nicht für diesen Zweck –

+0

Mögliche Duplikate von [Entfernen Sie alle Sonderzeichen, Interpunktion und Leerzeichen aus Zeichenfolge] (http://stackoverflow.com/questions/5843518/remove-all-special- Zeichen-Interpunktion-und-Leerzeichen-von-Zeichenfolge) – wwii

Antwort

0

Es sieht also so aus, als ob Sie einen regulären Ausdruck erstellen, der dem Muster eines Dateinamens entspricht, aber Sie kennen den Namen bereits?

Wenn Sie Sonderzeichen sagen, sprechen Sie speziell über Whitespace?

Hier ist der Code zur besseren Lesbarkeit:

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

Check-out http://docs.python.org/library/os.html#os.listdir

würde ich wahrscheinlich nur bekommen eine Liste der Dateien im Verzeichnis mit

chdir(os.path.dirname(scr) 
files = os.listdir(“.”) 
for name in files: 
    os.rename(name,des+”/“+name) 
+0

Sie haben einige Syntaxprobleme, vor allem die Zitate – abccd

+0

Das Python funktioniert auf meinem Mac. Ich bin mir nicht sicher was du meinst? –

+0

Anführungszeichen sind "nicht" – abccd