【发布时间】:2015-11-02 23:56:06
【问题描述】:
我在一个名为 MyScript.py 的文件中定义了一个名为 MyScript() 的函数。 MyScript 接受几个我想在命令行中提示用户输入的参数。所以我在 RunMyScript.py 中定义了一个单独的函数 RunMyScript() 来首先在命令行中运行来收集参数:
def RunMyScript():
import os
dir1 = input('Enter the Directory1 file path: ')
dir2 = input('Enter the Directory2 file path: ')
dir3 = input('Enter the Directory3 file path: ' )
flag = input('Flag? (Y/N): ')
os.chdir = dir1
from MyScript import MyScript
MyScript(dir2,dir3,flag)
然后通常 MyScript 函数开始:
def MyScript(dir2,dir3,flag="N"):
import os
os.chdir(dir2)
if flag=="Y":
DoSomething
wb.save(dir3)
当我尝试在命令行中运行 RunMyScript 时,我收到错误“TypeError: 'str' object is not callable。我怀疑它与它如何解释标志输入 Y 或 N 有关,但我不积极。
我是 Python 和该网站的新手,所以如果问题表述不正确,请原谅我,我会根据需要提供更多详细信息,并且我已经在网站上搜索了类似的问题,但不清楚我是否有和过去其他人一样的问题。
谢谢。
【问题讨论】:
-
错误发生在哪一行?该行的内容是什么?
-
你试过在输入中添加单引号吗?
-
在进行了@Kevin 下面建议的更改后,我现在将其缩小到 Flag arg 并且我认为它是如何传递到 MyScript 的。认为是因为来自 RunMyScript“Y”或“N”的用户输入被解释为字符串,因此在尝试调用 MyScript 时失败。所以我需要转换为变量。如果可行,将发布答案
-
我的临时解决方案感觉很便宜,但基本上我只是在 RunMyScript 中添加了几行说“如果标志 = N 标志 =1 elif 标志 = Y 标志 = 2”,然后将它作为 int 传递给 MyScript 不是一条海峡让帖子保持打开状态,因为其他人可能有更好的答案,可能对其他人有用
标签: python-3.x input cmd command-line-arguments user-input