我對python比較新,我正在爲我創建的工具箱編寫一個方法。當參數是一個路徑時,Python轉義字符 - Windows
功能是這樣的:
def explodeByUniqueAttributeValue(inputfile,fieldname,outputworkspace):
...
當輸入文件或工作區的路徑具有特定的轉義字符如\ t時的功能不起作用。 更具體地說,輸入文件可能是這樣的:
"C:\tmp\Data\Data.dbf"
和outputworkspace可能是這樣的:
"D:\Data\2010_12\Output"
在這種情況下,什麼樣的Python讀取相應的是:
>>> inputfile
C:\tmp\\Data\\Data.dbf
>>> print inputfile
C: mp\Data\Data.dbf
and
>>> 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()
用於與inputfile中的問題我已經找到了辦法來解決它:
Dummy = inputfile.replace('\t','\\t'); inputfile = Dummy; del Dummy
哪我可以重複用於所有的轉義字符或創建另一個正是這樣做的方法,但同樣不能爲
"\2010_12"
逃生這是
「讀」的蟒蛇來完成0"\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')
幫助將提前
他們不需要;你做錯了什麼。 – 2012-02-26 22:12:28
「raw」與「cooked」的概念僅適用於字符串文字,而不適用於它們表示的字符串對象或字符串。 – 2012-02-26 22:15:55
@ IgnacioVazquez-Abrams 有什麼辦法可以縮小我做錯了什麼嗎? 它可能與編碼有關嗎?最近我開始使用VS 2010和Python for Python,它可能會將編碼從'ascii'改爲'utf8'。 – 2012-02-26 22:40:30