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)