0

我试图编写一个 Python 2.7 脚本来处理 Unix 目录输入并将输入用作参数来启动另一个程序。

但是,我遇到了一个问题,python 的 str() 函数不喜欢输入中的斜线。当我尝试使用斜杠 str() 输入时,就像:

inputData = str(input('Put directory here:')) // OS is Mac OS X

> Put directory here: /User/username/abc.file
...
SyntaxError: invalid syntax

我认为这是由于 str() 不能自然地处理带有斜杠的字符串,因为如果我在输入过程中手动在每个站点上添加引号(键盘输入“/User/username/abc.file”),则不会触发此错误.

由于这个脚本需要处理用户输入,我希望它可以自动添加引号。我尝试了以下四处走动:

inputDataRaw = input('Put directory here:')
if (not inputDataRaw.startswith('"')) and (not inputDataRaw.startswith("'")):
    inputDataRaw = '"' + inputDataRaw
if (not inputDataRaw.endswith("'")) and (not inputDataRaw.endswith('"')):
    inputDataRaw = inputDataRaw + '"'
inputData = str(inputDataRaw)

但显然输入值不能在没有 str() 的情况下存储在 inputDataRaw 中,并且第一行直接触发了同样的错误。看起来所有在 python 中转义斜线的函数如果不先形成一个字符串就无法工作。

有人能指出解决这个问题的正确方法吗?谢谢。

4

2 回答 2

1

问题是您没有使用 python 注释;-)

改变:

inputData = str(input('Put directory here:')) // OS is Mac OS X

至:

inputData = str(input('Put directory here:')) # OS is Mac OS X
于 2013-11-03T10:45:49.717 回答
1

input尝试给eval定的输入。也就是说,它期望的是一个有效的 Python 文字——包括字符串值的引号。改为使用raw_input- 始终返回用户输入的字符串,将转换留给您的代码。

文档

Equivalent to eval(raw_input(prompt)).

此函数不会捕获用户错误。如果输入在语法上无效,则会引发 SyntaxError。如果评估期间出现错误,可能会引发其他异常。

如果 readline 模块已加载,则 input() 将使用它来提供精细的行编辑和历史功能。

考虑将 raw_input() 函数用于用户的一般输入。

于 2013-11-03T08:29:04.100 回答