我有一个名为MyScript()的函数,我在名为MyScript.py的文件中定义了该函数。 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'对象不可调用。我怀疑它与如何解释标志输入Y或N有关,但我不是正面的。
我是Python和网站的新手,所以请原谅我,如果问题没有正确处理,我会根据需要提供更多细节,我在网站上搜索了类似的问题,但我不清楚我和#39; m与过去的其他人有同样的问题。
谢谢。
答案 0 :(得分:1)
我不完全确定你要做什么,但我认为你的问题与这条线有关:
os.chdir = dir1
您正在将os.chdir更改为字符串。要正确更改您应该使用的目录:
os.chdir(dir1)
答案 1 :(得分:0)
在MyScript功能中,您调用os.chdir(dir2)
,但os.chdir
是一个字符串,且无法调用。请改为os.chdir = dir2
。
但是现在,你没有范围问题吗?当我复制粘贴您的代码时,它不起作用,因为os.chdir(dir1)
与import os
的范围不同。
我建议您将所有import
移到脚本顶部,并将input
中的raw_input
更改为字符串输入的最佳支持。
尝试更改代码:
import os
import MyScript
def RunMyScript():
dir1 = raw_input('Enter the Directory1 file path: ')
dir2 = raw_input('Enter the Directory2 file path: ')
dir3 = raw_input('Enter the Directory3 file path: ' )
flag = raw_input('Flag? (Y/N): ')
os.chdir(dir1)
MyScript(dir2, dir3, flag)
if __name__ == '__main__':
RunMyScript()
和MyScript:
import os
def MyScript(dir2, dir3, flag = "N"):
os.chdir(dir2)
if flag == "Y":
#Do Something
wb.save(dir3)
我希望能解决你的问题。