【发布时间】:2019-11-21 01:21:31
【问题描述】:
我正在编写一个代码,我希望用户提供文件的位置,它将运行我编写的检查。 在这里,我已经硬编码了 excel 路径,但我希望它是动态的。
我正在尝试使用 Tkinter 进行编码和动态读取,但出现错误:
from tkinter import *
from tkinter.ttk import *
import pandas as pd
import csv
from tkinter.filedialog import askopenfile
root = Tk()
root.geometry('200x100')
def open_file():
file = askopenfile(mode ='r', filetypes =[('Python Files',
'*.csv')])
if file is not None:
content = file.read()
print(content)
btn = Button(root, text ='Open', command = lambda:open_file())
btn.pack(side = TOP, pady = 10)
prac = askopenfile(mode ='r', filetypes =[('Python Files',
'*.csv')])
content = prac.read()
content["latlong"] ='FALSE'
content.loc[(content["LONGITUDE"] >= 70.0000) &
(content["LONGITUDE"] <=
98.0000) & (content["LONGITUDE"] != 'nan') &
(content["LATITUDE"] !=
'nan'), ["latlong"]] = 'TRUE'
file.to_csv("C:/Users/patesari/Desktop/python
work/practice1.csv")
writer = content[content["latlong"]=='TRUE']
writer.to_csv('C:/Users/patesari/Desktop/python
work/newfile1.csv',
index=False)
writer = content[content["latlong"]=='TRUE']
writer.to_csv('C:/Users/patesari/Desktop/python
work/outputfiles/latlong1.csv', index=False)
mainloop()
#但是这段代码给了我一个错误:content["latlong"] ='FALSE' #TypeError:“str”对象不支持项目分配。 这段代码对我来说很好,但我已经对路径进行了编码:
def latlong_func():
data = pd.read_csv(r'C:/Users/patesari/Desktop/python
work/Gap1`.csv')
df = pd.DataFrame(data,columns=['SUPPLIER_ID','ACTION'])
data["latlong"] ='FALSE'
data.loc[(data["LONGITUDE"] >= 70.0000) & (data["LONGITUDE"]
<= 98.0000)&
(data["LONGITUDE"] != 'nan') & (data["LATITUDE"] != 'nan'),
["latlong"]]
= 'TRUE'
data.to_csv("C:/Users/patesari/Desktop/python
work/practice1.csv")
writer = data[data["latlong"]=='TRUE']
writer.to_csv('C:/Users/patesari/Desktop/python
work/newfile1.csv',
index=False)
writer = data[data["latlong"]=='TRUE']
writer.to_csv('C:/Users/patesari/Desktop/python
work/outputfiles/latlong1.csv', index=False)
如果我使用 tkinter,需要纠正什么。以及我的哪段代码 如果不使用 tkinter 应该申请
【问题讨论】:
-
看看 argparse 它将帮助您了解如何从命令行传递 arg。 docs.python.org/2/howto/argparse.html
-
你应该使用
askopenfilename而不是askopenfile来获取文件名而不是打开的文件对象。然后您可以将文件名与pd.read_csv一起使用。使用content = prac.read(),您将其读取为纯文本,因此您可以在content中的一个字符串中获取所有内容,因此您不能像DataFrame 那样使用它,也不能使用content[...]