0

这是代码,我遇到的问题是,虽然一切都按预期工作,但除非我指定完整的文件路径(如“s”),否则无法调用所需的 perl 脚本,即使它们都在同一个目录中(桌面)。任何帮助,将不胜感激。

import subprocess
status = ['s', 'mj', 'ms', 'h','q']
while(1):
    while(1):
        print("Compute income tax: \n")
        print("\ts = single \n")
        print("\tmj = married and filing  jointly \n")
        print("\tms = married and filing seperately \n")
        print("\th = head of household \n")
        print("\tq = quit \n")
        #get user input for status
        choice=raw_input("Enter status: ")
        if (choice in status):
            print("58")
            break
        else:
            print("Unknown status!")
    if (choice=='q'):
        break
    else:
        if (choice=="s"):
            subprocess.call('perl C:/Users/Username/Desktop/single.pl')
        elif(choice=='mj'):
            subprocess.call('perl marriedJointly.pl')
        elif(choice=='ms'):
            subprocess.call('perl marriedSeperately.pl')
        elif(choice=='h'):
            subprocess.call('perl head.pl')
            #and so on
4

1 回答 1

0

你在调用脚本C:\>python myscript.py吗?如果是这样,那么您的脚本实际上将在 python 程序下运行,这意味着它的位置将是您的 python 可执行它的任何位置,而不是脚本。您可以通过导入os和运行来验证这一点os.getcwd(),它可能会显示类似'C:\\Python33'.

要解决这个问题,要么直接调用你的脚本C:\myscript.py(这很好用;Windows 知道根据扩展名使用哪个解释器),os.chdir()用来修复你在文件系统中的位置,或者只使用绝对路径。

于 2014-02-23T00:24:17.710 回答