Python:使用另一个函数从命令行调用我的脚本
Python: Call my script from command line using another function
我在名为 MyScript.py 的文件中定义了一个名为 MyScript() 的函数。 MyScript 采用几个参数,我想在命令行中提示用户输入这些参数。所以我写了一个单独的函数 运行MyScript() 在 运行MyScript.py 中定义到命令行中的第一个 运行 来收集参数:
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)
当我在命令行中尝试 运行 运行MyScript 时出现错误“TypeError: 'str' object is not callable。我怀疑它与如何做有关它解释标志输入 Y 或 N,但我不肯定。
我是 Python 和该网站的新手,所以如果问题措辞不当,请原谅我,我会根据需要提供更多详细信息,我已经在该网站上搜索过类似问题,但不清楚我和过去的其他人有同样的问题。
谢谢。
在 MyScript 函数中调用 os.chdir(dir2)
但 os.chdir
是一个字符串,它不可调用。请尝试 os.chdir = dir2
。
编辑:恰恰相反……我很困惑。
但是现在,您没有范围问题吗?当我复制粘贴您的代码时,它不起作用,因为 os.chdir(dir1)
与 import os
.
不在同一范围内
我建议您将所有 import
移动到脚本的顶部,并将 raw_input
中的 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)
希望能解决你的问题
我不完全确定您要做什么,但我认为您的问题与以下行有关:
os.chdir = dir1
您正在将 os.chdir 更改为字符串。要正确更改目录,您应该使用:
os.chdir(dir1)
我在名为 MyScript.py 的文件中定义了一个名为 MyScript() 的函数。 MyScript 采用几个参数,我想在命令行中提示用户输入这些参数。所以我写了一个单独的函数 运行MyScript() 在 运行MyScript.py 中定义到命令行中的第一个 运行 来收集参数:
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)
当我在命令行中尝试 运行 运行MyScript 时出现错误“TypeError: 'str' object is not callable。我怀疑它与如何做有关它解释标志输入 Y 或 N,但我不肯定。
我是 Python 和该网站的新手,所以如果问题措辞不当,请原谅我,我会根据需要提供更多详细信息,我已经在该网站上搜索过类似问题,但不清楚我和过去的其他人有同样的问题。
谢谢。
在 MyScript 函数中调用 os.chdir(dir2)
但 os.chdir
是一个字符串,它不可调用。请尝试 os.chdir = dir2
。
编辑:恰恰相反……我很困惑。
但是现在,您没有范围问题吗?当我复制粘贴您的代码时,它不起作用,因为 os.chdir(dir1)
与 import os
.
我建议您将所有 import
移动到脚本的顶部,并将 raw_input
中的 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)
希望能解决你的问题
我不完全确定您要做什么,但我认为您的问题与以下行有关:
os.chdir = dir1
您正在将 os.chdir 更改为字符串。要正确更改目录,您应该使用:
os.chdir(dir1)