2009-12-26 8 views
0

Je suis en train de travailler avec des chemins de fichiers longs (Windows) en Python et ont rencontré quelques problèmes. Après avoir lu la question here, il semble que j'ai besoin d'ajouter '\\? \' Au début de mes longs chemins de fichiers afin de les utiliser avec os.stat (filepath). Le problème que j'ai est que je ne peux pas créer une chaîne en Python qui se termine par une barre oblique inverse. La question here souligne que vous ne pouvez même pas terminer les chaînes en Python avec un seul caractère '\'.comment ajouter « \? » À l'avant d'un chemin de fichier en Python

Y at-il dans l'une des bibliothèques standard Python ou partout ailleurs que vous permet d'ajouter simplement « \\? \ » À l'avant d'un chemin de fichier que vous avez déjà? Ou existe-t-il d'autres solutions pour travailler avec de longs chemins de fichiers dans Windows avec Python? Cela semble être une chose tellement simple à faire, mais je n'arrive pas à la comprendre pour la vie de moi.

+0

"ajouter à l'avant" est une phrase confuse. Vous pourriez vouloir dire "préfixer". –

Répondre

3

« \\\\? \\ » devrait vous donner exactement la chaîne que vous voulez.

Deuxième réponse: Bien sûr, vous pouvez mettre fin à une chaîne en Python avec une barre oblique inverse. Vous ne pouvez pas le faire quand c'est une chaîne "brute" (un préfixe avec un 'r'). Que vous utilisez habituellement pour les chaînes qui contient (beaucoup de) antislashs (pour éviter le syndrome de l'infâme ;-) « se penchant cure-dents »)

+0

Les littéraux de chaînes brutes doivent échapper à des séquences d'échappement ('\" ',' \ n', '\ (', '\ s', etc.), ce qui explique pourquoi vous ne pouvez pas en terminer une dans une barre oblique inverse –

+0

Je l'avais déjà essayé et j'ai eu une erreur, bien que cela se soit fait parce que je l'avais fait avec un chemin de fichier comme "\\? \ D: quelquechose" au lieu de "\\? \ D: \ somefile ". –

0

Même avec une chaîne brute, vous pouvez terminer par une barre oblique inverse avec:

>>> print r'\\?\D:\Blah' + '\\' 
\\?\D:\Blah\ 

ou même:

>>> print r'\\?\D:\Blah' '\\' 
\\?\D:\Blah\ 

depuis Python Concatène les chaînes littérales en un seul.