我想打开并读取文件Mappe1.csv,但是它不起作用。我正在使用Python 3.6.5 Anaconda。我不知道我在做什么错。有什么想法吗?
文件Mappe1.csv包含:
A;B;C
1;4;7
2;5;8
3;6;9
用于打开Mappe1.csv的python代码如下所示:
import csv
class CSVAdapter:
def read_csv(self):
with open("C:/Users/User/PycharmProjects/General/DesignUploader/Mappe1.csv") as file:
dialect = csv.Sniffer().sniff(file.read(1024))
csv_file = csv.reader(file.readlines(), dialect, quotechar='"')
print("A")
csv_file_list = []
for row in file:
print("B")
for row in csv_file:
print("C")
csv_file_list.append(row)
return csv_file_list
打印输出仅为“ A”。没有打印出“ B”和“ C”,这导致我得出以下结论:文件未正确读取。
是否需要任何允许Python读取文件的python / windows设置?
谢谢您的帮助!
答案 0 :(得分:2)
您需要提供csv.reader
文件对象,而不是file.readlines()
。如果要打印B,则需要查找到文件的开头,类似于C。
import csv
def read_csv():
with open("data.csv") as file:
dialect = csv.Sniffer().sniff(file.read(1024))
csv_file = csv.reader(file, dialect, quotechar='"')
print("A")
csv_file_list = []
file.seek(0)
for row in file:
print("B")
file.seek(0)
for row in csv_file:
print("C")
csv_file_list.append(row)
return csv_file_list
print(read_csv())
打印:
A
B
B
B
B
C
C
C
C
[['A', 'B', 'C'], ['1', '4', '7'], ['2', '5', '8'], ['3', '6', '9']]
答案 1 :(得分:0)
csv.reader将文件对象作为第一个参数,而不是file.readlines()返回的列表。
所以您的电话:
csv_file = csv.reader(file.readlines(), dialect, quotechar='"')
应为:
csv_file = csv.reader(file, dialect, quotechar='"')
您要打印的循环('B')应该是:
for row in file.readlines():
print('B')
您的for循环到print('C')应该可以正常工作,尽管值得注意的是,您可以直接设置csv_file_list = list(csv_file)。您应该使用以下命令将文件重置为第一行:
file.seek(0)
答案 2 :(得分:-1)
在您的代码中,您仅打印import { library } from '@fortawesome/fontawesome-svg-core';
import { oldName } from '@fortawesome/free-solid-svg-icons';
const faFortAwesome = oldName;
library.add(faFortAwesome);
,A
或B
。尝试打印整行。您会看到C
中的row
是一个对象,我们只访问其中的一部分。在the docs中,查看示例:
cvs_file
在此示例中,尝试:
>>> import csv
>>> with open('eggs.csv', newline='') as csvfile:
... spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
... for row in spamreader:
... print(', '.join(row))
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam
相反。
最后,您将想要更改文件的读取方式。您的 for row in csv_file:
print(','.join(row))
正在使用cvs_files
中的delimiter
。尝试代替;
。而且您的dialect
实际上没有任何属性file
。您将需要
row
答案 3 :(得分:-1)
在处理数据时,我使用pandas
来读取csv。代码非常简单,并将答案输出到熊猫DataFrame
中。
import pandas
df = pandas.read_csv('C:/Users/User/PycharmProjects/General/DesignUploader/Mappe1.csv')
df