繁体   English   中英

Python子进程和目录上的运行脚本

[英]Python subprocess and running script on directory

我试图运行子进程。 我在目录上运行一个python文件(以转换目录中的每个文件。)转换器工作,并且已将其实现为gui(PYQT4)。 这是到目前为止我得到的:

def selectFile(self):



    self.listWidget.clear() # In case there are any existing elements in the list
    directory = QtGui.QFileDialog.getExistingDirectory(self,
                                                       "Pick a folder")


    if directory:
        for file_name in os.listdir(directory):
            if file_name.endswith(".csv"):
                self.listWidget.addItem(file_name)
                print (file_name)




def convertfile(self, directory):

    subprocess.call(['python', 'Createxmlfromcsv.py', directory], shell=True)

我得到的错误是..

Traceback (most recent call last):
  File "/Users/eeamesX/PycharmProjects/Workmain/windows.py", line 162, in convertfile
    subprocess.call(['python', 'Createxmlfromcsv.py', directory], shell=True)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
TypeError: execv() arg 2 must contain only strings

任何初学者的帮助,表示赞赏:)

从评论到问题,该行:

    self.convertButton.clicked.connect(self.convertfile)

单击按钮时,会将False发送到convertfile方法,这就是您看到该错误的原因。

您需要向convertfile添加一些代码,该代码将从list-widget中的所选项目获取目录路径。 就像是:

    item = self.listWidget.currentItem()
    if item is not None:
        directory = unicode(item.text())
        subprocess.call(['python', 'Createxmlfromcsv.py', directory])

但是请注意,您没有将完整目录路径存储在list-widget中,因此子流程调用可能会失败。 您确实应该像这样将项目添加到列表小部件:

    self.listWidget.addItem(os.path.join(directory, file_name))

在“ subprocess.call(['python','Createxmlfromcsv.py',directory],shell = True)”中,“ directory”变量不是字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM