【发布时间】:2017-06-14 17:10:07
【问题描述】:
我想使用文件浏览器加载一些 .csv(我们称它们为 csv1)文件并在我的 python 脚本中运行它们。结果,它将从 csv1 复制一些列并生成一个新的 .csv 文件 (csv2)。我已经编写了文件浏览器的代码,以及生成 csv2 文件的脚本。但是,我找不到使用文件浏览器选择 csv1 然后将其输入到我的脚本中以创建 csv2 文件的方法。
如果有人知道解决方案,请帮忙评论。非常感谢!!
以下是我目前的代码:
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')
【问题讨论】:
-
是一个模块吗?还是来自
import pandas as pd的代码是一个单独的模块?将模块级代码与 PyQt 类混合在一起似乎很奇怪,而且可能不是您想要的。 -
您要选择一个文件还是多个文件?
-
另请注意,按照约定类 methods 以小写字母开头,因此
SingleBrowse应该是singleBrowse或者 - 甚至更 Pythonic -single_browse。不管怎样,它仍然可以工作。 -
我了解到您想通过浏览器文件选择csv0.csv和csv1.csv。我是对的?
-
@JoeP 它实际上来自 2 个独立的模块(脚本),但我只是将它们组合在一起。因为我认为一旦我创建了带有“Widget”类的按钮,我可以在“import pandas as pd”之后的代码中的某个地方调用它?谢谢:)