"用Python读取文件出现问题"

2024-09-28 21:38:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读取一个文件,但由于某种原因,它不工作,我有一些困难,以诊断问题,因为我不习惯python

我使用以下代码来读取文件

with open(self.lineEdit_2.text(), 'r') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    idList = []
    idExist = false
    for row in reader:
        print(row[1])
        for i in len(idList):
            if row[1] == idList[i]:
                idExist = true
                break
            else:
                idExist = false
    if not idExist:
        idList.append(row[1])

这个文件名为candata.txt,并且self.lineEdit_2.text()将目标返回到该文件。该文件具有以下结构:

1542208616,0x7DF,8,01 03 55 55 55 55 55 55 
1542208616,0x7E9,8,02 43 00 00 00 00 00 00 
1542208616,0x7E8,8,02 43 00 00 00 00 00 00 
1542208616,0x7DF,8,01 07 55 55 55 55 55 55 
1542208616,0x7E9,8,02 47 00 00 00 00 00 00 
1542208616,0x7E8,8,02 47 00 00 00 00 00 00 

目的是在第1列中列出文件中的不同ID

在尝试调试时,当它到达row in reader:时退出


Tags: 文件csvfile代码textinselffalsefor
2条回答

您是否对用于读取文件的包有限制? 如果没有,为什么不试试熊猫呢

根据我从您的脚本中了解到的情况,第二列包含id,您可以看到数据中出现的所有不同id的列表

因此,您可以尝试这样做(我的猜测是,这将是faaar更有效):

import pandas as pd
df = pd.read_table(self.lineEdit_2.text() , sep=',', names=['c0', 'id', 'c2', 'c3', 'c4', 'c5', 'c6'])
unique_ids = df['id'].unique()

好的,首先:修正你的压痕!在with ...:之后应该总是有一个缩进块

其次,self.lineEdit_2.text()返回什么?open()方法要求文件的路径作为第一个参数,而不是您试图读取的文本(https://docs.python.org/3/library/functions.html#open

我猜你根本不需要第一句话,但这样的话可能有用:

reader = csv.reader(self.lineEdit_2.text().split('\n'), delimiter=',')
for row in reader:
    ...

相关问题 更多 >