我正在开发一个应用程序,用户可以在其中提供投递箱文件和访问令牌的路径,并查看文件的内容。是否可以只读取文件内容而不实际下载文件。
import dropbox
import tempfile
import csv
dbx = dropbox.Dropbox(<access_token>)
metadata, f = dbx.files_download('/test/MOCK_DATA.csv')
filename = tempfile.NamedTemporaryFile(suffix='.csv').name
with open(filename, 'wb') as file:
file.write(f.content)
with open(filename) as file:
csv_reader = csv.reader(file, delimiter=',')
line_count = 0
for row in csv_reader:
if line_count == 0:
print(f'Column names are {", ".join(row)}')
line_count += 1
else:
print(row)
line_count += 1
print(f'Processed {line_count} lines.')
目前,我只能阅读内容,但只能在下载后阅读。
答案 0 :(得分:1)
使用files_download
是使用Dropbox Python SDK访问文件数据的正确方法。然后在您的代码中将文件数据写入本地文件,但这不是必需的。
csv.reader
方法记录为:
csvfile可以是支持迭代器协议的任何对象,并且每次调用其next()方法时都会返回一个字符串-文件对象和列表对象均适用。
因此您可以执行以下操作:
import dropbox
import csv
dbx = dropbox.Dropbox(<access_token>)
metadata, f = dbx.files_download('/test/MOCK_DATA.csv')
csv_reader = csv.reader(f.content.decode().splitlines(), delimiter=',')
line_count = 0
for row in csv_reader:
if line_count == 0:
print(f'Column names are {", ".join(row)}')
line_count += 1
else:
print(row)
line_count += 1
print(f'Processed {line_count} lines.')