Python:使用另一个函数

时间:2015-08-10 22:29:16

标签: python-3.x input cmd command-line-arguments user-input

我有一个名为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与过去的其他人有同样的问题。

谢谢。

2 个答案:

答案 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)

我希望能解决你的问题。