使用文件浏览器选择文件,并将路径存储在python脚本中
我想使用一个文件浏览器来加载一些.csvlet文件,我们称它们为csv1文件,并在python脚本中运行它们。因此,它将从csv1复制一些列,并生成一个新的.csv文件csv2。我已经编写了文件浏览器的代码,以及生成csv2文件的脚本。但是,我找不到使用文件浏览器选择csv1,然后在脚本中输入它来创建csv2文件的方法 如果有人知道解决方案,请帮助评论。非常感谢 以下是我迄今为止的代码:使用文件浏览器选择文件,并将路径存储在python脚本中,python,csv,pyqt,pyqt4,Python,Csv,Pyqt,Pyqt4,我想使用一个文件浏览器来加载一些.csvlet文件,我们称它们为csv1文件,并在python脚本中运行它们。因此,它将从csv1复制一些列,并生成一个新的.csv文件csv2。我已经编写了文件浏览器的代码,以及生成csv2文件的脚本。但是,我找不到使用文件浏览器选择csv1,然后在脚本中输入它来创建csv2文件的方法 如果有人知道解决方案,请帮助评论。非常感谢 以下是我迄今为止的代码: from PyQt4 import QtGui import os, sys import subproce
from PyQt4 import QtGui
import os, sys
import subprocess
class Widget(QtGui.QWidget):
def __init__(self):
super(Widget, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(600, 300, 400, 200)
self.setWindowTitle('Multiple Browse')
btn = QtGui.QPushButton('Browse', self)
btn.resize(btn.sizeHint())
btn.clicked.connect(self.SingleBrowse)
btn.move(150, 100)
self.show()
def SingleBrowse(self):
filePaths = QtGui.QFileDialog.getOpenFileNames(self,
'Multiple File',
"Desktop",
'*.csv')
def main():
app = QtGui.QApplication(sys.argv)
w = Widget()
app.exec_()
if __name__ == '__main__':
main()
## Below codes are initially from a separate script, but I just combine them
## together in one. Because I think maybe I could call the class function
## "Wideget" somewhere below for using the file browser to select the files?
import pandas as pd
from pandas import DataFrame
df1 = pd.read_csv('csv0.csv')
df2 = pd.read_csv('csv1.csv')
df3 = df1.loc[:, ['a_column', 'b_column']]
df3[""] = ""
df4 = df2.loc[:, ['c_column','d_column' , 'e_column']]
new = pd.concat([df3, df4], axis=1)
new.index = new.index + 1
new.to_csv('csv2.csv')
如果你想一个接一个地获取2个文件的路径,你必须使用getOpenFileName,另外,我知道它们必须是不同的文件,所以我们验证之前没有选择它
def initUI(self):
# ...
self.csv = []
def SingleBrowse(self):
if len(self.csv) < 2:
filePath = QtGui.QFileDialog.getOpenFileName(self,
'',
"Desktop",
'*.csv')
if filePath != "" and not filePath in self.csv:
self.csv.append(filePath)
print(self.csv)
那是一个模块吗?或者作为pd导入的代码是一个单独的模块?将模块级代码与PyQt类混合在一起似乎很奇怪,可能不是您想要的。您想选择一个文件还是几个文件?另请注意,按照惯例,类方法以小写开头,因此SingleBrowse应该是SingleBrowse,或者更像Python的single_browse。不过,这两种方式都可以。我知道您希望通过浏览器文件选择csv0.csv和csv1.csv。我说的对吗?@JoeP它实际上来自两个单独的模块脚本,但我只是将它们组合在一起。因为我认为一旦我用类小部件创建了按钮,我可以在导入pandas作为pd后在代码的某个地方调用它?谢谢!!:p我尝试了这个并调用了main,但是它仍然无法加载正确的路径。。。我将在下面发布我修改过的脚本,如果可能的话,请让我知道我哪里做错了。谢谢!!下面的主要是一个代码,这是在同一个脚本或在另一个?非常感谢!!老兄,你太棒了,而且做得很好