参数是路径时的Python转义字符 - Windows

时间:2012-02-26 22:10:53

标签: python methods input parameters path

我是python的新手,我正在为我正在创建的工具箱编写一个方法。

这个功能是这样的:

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

当输入文件或工作空间的路径具有特定的转义字符,例如\ 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   

我可以为所有转义字符重复这些内容,或创建另一种方法来完成此操作,但

无法完成相同的操作
"\2010_12"    

由python“读取”的转义为

"\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')

非常感谢帮助 Thanx提前

1 个答案:

答案 0 :(得分:0)

你从哪里获得路径?来自用户的输入?

在这种情况下,有办法:

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'

还是你追求的其他东西?