Drop en fil på et python script i Windows - undgå Windows brug af backslashes i argumentet

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg ved alt om, hvordan Windows bruger backslashes til filnavne osv., Og Unix bruger fremadrettet. Jeg bruger dog aldrig tilbageslag med strenge, jeg opretter i min kode. Imidlertid:


Når windows explorer 'drops' en fil på et python script, indeholder strengen den passerer backslashes. Disse oversættes til flugtsekvenser i strengene i sys.argv listen, og så har jeg ingen måde at ændre dem efter det (åben for forslag der)


Er der nogen måde, jeg kan på en eller anden måde få Windows til at passere en bogstav eller ... nogen anden måde jeg kan løse dette problem?


Jeg elsker min script, der kan falde ned, men det eneste der forhindrer mig, er, at vinduerne slår tilbage.


REDIGERE:


Beklager alle, fejlen var faktisk ikke forbifarten af ​​strengen - som nogen har påpeget nedenfor, men det kunne stadig hjælpe andre:


Sørg for at bruge absolutte stinavn, fordi når Windows-shell IKKE kører scriptet i den nuværende mappe som du ville fra en kommandolinje. Dette forårsager tilladelse nægtet fejl, når man forsøger at skrive til enkeltdelte stinavn, der ikke er absolutte.

Bedste reference


Kan ikke reproducere. Dette:


import os, sys
print sys.argv
print map(os.path.exists, sys.argv)
raw\_input()


giver mig det her:


['D:\workspaces\generic\SO\_Python\9266551.py', 'D:\workspaces\generic\SO\_Python\9254991.py']
[True, True]


efter at have slettet den anden fil på den første. Python 2.7.2 (på Windows). Kan du prøve denne kode?