Экранирующий символ Python, когда параметром является путь - Windows - PullRequest
3 голосов
/ 27 февраля 2012

Я относительно новичок в python, и я пишу метод для набора инструментов, который я создаю.

Функция выглядит примерно так:

def explodeByUniqueAttributeValue(inputfile,fieldname,outputworkspace):
...

Когда путь к входному файлу или рабочей области содержит специальные escape-символы, такие как \ t, функция не работает.В частности, входной файл может выглядеть примерно так:

"C:\tmp\Data\Data.dbf"    

, а выходное пространство может выглядеть примерно так:

"D:\Data\2010_12\Output"

В этих случаях Python читает соответственно:

>>> inputfile    
C:\tmp\\Data\\Data.dbf   

>>> print inputfile    
C:  mp\Data\Data.dbf

и

>>> outputworkspace  
'D:\\Data\x810_12\\Output'   
>>> print outputworkspace
D:\Dataチ0_12\Output

Мой вопрос:
Есть ли способ проанализировать входные параметры функции как необработанные строки, так же, как это можно сделать при назначениифайл и рабочая область вывода выполняются через переменную в сценарии , т. е.

inputfile = r"C:\tmp\Data\Data.dbf"
outputworkspace = r"D:\Data\2010_12\Output"

или любую функцию, примененную к параметрам, которая вернет их в общий формат?Я до сих пор пробовал os.path.normpath () или string.encode ()

для решения проблемы с входным файлом. Я нашел способ обойти это следующим образом:

Dummy = inputfile.replace('\t','\\t'); inputfile = Dummy; del Dummy   

Что я могу повторить для всех escape-символов или создать другой метод, который делает именно это, но этого нельзя сделать для экранирования

"\2010_12"    

, который "читается" питоном как

"\x810_12"   

Так как это не был бы "правильный" способ программирования

Я уже читал такие решения, как использование "/" или "\\", но мне интересно, есть ли способпередать входные параметры метода как необработанные.

Добавление примера:

# -*- coding: ascii -*-
import os

def printpaths(file,outputworkspace):
    print file
    print outputworkspace

printpaths('C:\tmp\Data\Data.dbf','D:\Data\2010_12\Data')

Помощь будет принята с благодарностью
Заранее спасибо

1 Ответ

0 голосов
/ 27 февраля 2012

Откуда вы получаете пути?вход от пользователя?

В этом случае, есть способы:

Python 2.7.1 (r271:86832, May  6 2011, 10:39:37) 
[GCC 3.3.3 (SuSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> raw_input("filename: ")
filename: C:\tmp
'C:\\tmp'
>>> raw_input("output: ")
output: D:\Data\2010_12\Output
'D:\\Data\\2010_12\\Output'

Или это было что-то еще, что вы преследовали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...