0

我正在开发一个应用程序,用户可以在其中提供下拉框文件的路径和访问令牌并查看文件的内容。是否可以只读取文件的内容而不实际下载它。

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.')

目前我能够阅读内容,但只有在下载后。

4

1 回答 1

1

Usingfiles_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.')
于 2018-09-24T21:41:47.710 回答