python - Sådan bruger du copyfile, når der er mellemrum i katalognavnet?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at udføre en simpel filkopiopgave under Windows, og jeg har nogle problemer.


Mit første forsøg var at bruge


import shutils

source = 'C:Documents and SettingsSome directoryMy file.txt'
destination = 'C:Documents and SettingsSome other directoryCopy.txt'

shutil.copyfile(source, destination)


copyfile kan ikke finde kilden og/eller kan ikke oprette destinationen.


Mit andet gæt var at bruge


shutil.copyfile('"' + source + '"', '"' + destination + '"')


Men det svigter igen.


Enhver antydning?





Rediger


Den resulterende kode er


IOError: [Errno 22] Invalid argument: '"C:Documents and SettingsSome directoryMy file.txt"'

Bedste reference


Jeg tror ikke, at pladser skal skyldes. Du skal undslippe tilbageslag i stier, som denne:


source = 'C:\Documents and Settings\Some directory\My file.txt'


eller, endnu bedre, brug prefixet r:


source = r'C:Documents and SettingsSome directoryMy file.txt'

Andre referencer 1


Brug skråstreger eller en r 'rå streng'.

Andre referencer 2


Copyfile håndterer plads 'd filnavne.


Du undslipper ikke \ i filstierne korrekt.


import shutils

source = 'C:\Documents and Settings\Some directory\My file.txt'
destination = 'C:\Documents and Settings\Some other directory\Copy.txt'

shutil.copyfile(source, destination)


For at illustrere, prøv at køre dette:


print 'Incorrect: C:TestDerp.txt'
print 'Correct  : C:\Test\Derp.txt'


Det ser ud til, at der også er andre problemer. Errno 22 angiver et andet problem. Jeg har set denne fejl i følgende scenarier:



  • Kildefil eller målfil bruges i en anden proces.

  • Filsti indeholder fancy Unicode-tegn.

  • Andre adgangsproblemer.