如何使用 iPad 使用 Pythonista 读取 csv 文件?
Posted
技术标签:
【中文标题】如何使用 iPad 使用 Pythonista 读取 csv 文件?【英文标题】:How do I read a csv file with Pythonista using an IPad? 【发布时间】:2020-03-05 17:38:03 【问题描述】:我对 Python 还很陌生,我正在尝试学习如何读取和写入 csv 文件。我在 iPad 上使用 Pythonista 进行编程,但遇到了一个我似乎无法解决的问题。我想读取一个我不知道目录的 csv 文件,因为 ios 文件管理应用程序有限。 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 找到它,结果是一样的。
那么似乎是什么导致了这个问题?
【问题讨论】:
【参考方案1】:尝试使用with open()
(读取)语法。我有一些非常相似的东西,这对我有用。你的路径是正确的。
with open(path, 'r', encoding='utf-8') as reader:
reader = csv.DictReader(reader)
for row in reader:
# ...do stuff
【讨论】:
【参考方案2】:问题在于我如何命名我的文件。我要打开的 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. 如果您在声明path
的末尾添加.csv
,则工作得很好。
【讨论】:
以上是关于如何使用 iPad 使用 Pythonista 读取 csv 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Siri 读取 Pythonista 脚本的返回值?