2

我对 Python 相当陌生,我正在尝试学习如何读取和写入 csv 文件。我正在使用 Pythonista 在我的 iPad 上编程,但遇到了一个我似乎无法解决的问题。由于有限的 iOS 文件管理应用程序,我想读取一个我不知道目录的 csv 文件。csv 文件位于我的 python 文件所在的同一文件夹中。我在 google 上发现可以使用以下代码找到绝对目录:

import os print(os.path.abspath("google_stock_data.csv"))

吐出:

/private/var/mobile/Library/Mobile Documents/iCloud~com~omz-software~Pythonista3/Documents/google_stock_data.csv

好吧,现在我的问题:

import csv
path = "/private/var/mobile/Library/Mobile Documents/iCloud~com~omz-software~Pythonista3/Documents/google_stock_data.csv"
file = open(path, newline= '')
reader = csv.reader(file)
header = next(reader)
data = [row for row in reader]
print(header)
print(data[0])

上面的代码给了我错误:

FileNotFoundError: [Errno 2] No such file or directory: '/private/var/mobile/Library/Mobile Documents/iCloud~com~omz-software~Pythonista3/Documents/google_stock_data.csv'

我知道该文件存在并且目录应该是正确的,因为我也尝试使用 pathlib 找到它并且结果是相同的。

那么似乎是什么导致了这个问题?

4

2 回答 2

0

尝试使用with open()(读取)语法。我有一些非常相似的东西,这对我有用。你的路径是正确的。

with open(path, 'r', encoding='utf-8') as reader:
        reader = csv.DictReader(reader)
        for row in reader: 
            # ...do stuff
于 2020-06-07T12:38:21.557 回答
0

问题在于我如何命名我的文件。我要打开的 csv 文件的名称称为“google_stock_data.csv”。请注意,这是文件名,末尾不包含其文件后缀(即“.csv”)。

如果要使用file = open(...),还必须在文件名末尾添加文件后缀。

这意味着在我的情况下它应该是这样的:

file = open('google_stock_data.csv.csv', newline= '')

print(os.path.abspath("enter_file_name"))如果您在代码所在的文件夹中有文件,则不需要查找绝对路径。如果您这样做,无论出于何种原因,请不要忘记在末尾添加文件后缀。

至于如何从我的代码和文件中输出任何内容

with open(path, 'r', encoding='utf-8') as reader:
    reader = csv.DictReader(reader)
    for row in reader: 
        # ...do stuff

来自@Michael M. 如果您.csv在声明的末尾添加path.

于 2021-01-08T12:19:36.903 回答