将csv写入Dropbox的Python脚本在本地工作,但在AWSEC2上运行时失败

将csv写入Dropbox的Python脚本在本地工作,但在AWSEC2上运行时失败,python,pandas,csv,amazon-ec2,dropbox,Python,Pandas,Csv,Amazon Ec2,Dropbox,我有一个python脚本,经过大量数据处理后,它将一个“.csv”文件写入我的Dropbox(它将一个文件直接保存到Dropbox,而不首先将其存储在本地)。当我在本地计算机上运行代码时,程序会按照我的预期成功创建文件。然而,当我在Amazon的EC2服务器上运行相同的代码时,所创建的文件是完全不可理解的 以下是问题的简化版本: import io import dropbox import pandas as pd DBX = dropbox.Dropbox('My_Dropbox_Toke

我有一个python脚本,经过大量数据处理后,它将一个“.csv”文件写入我的Dropbox(它将一个文件直接保存到Dropbox,而不首先将其存储在本地)。当我在本地计算机上运行代码时,程序会按照我的预期成功创建文件。然而,当我在Amazon的EC2服务器上运行相同的代码时,所创建的文件是完全不可理解的

以下是问题的简化版本:

import io
import dropbox
import pandas as pd

DBX = dropbox.Dropbox('My_Dropbox_Token')

df = pd.DataFrame([range(5), list("ABCDE")])

with io.BytesIO() as stream:

    with pd.ExcelWriter(stream) as writer:
        df.to_excel(writer)
        writer.save()

    stream.seek(0)

    DBX.files_upload(stream.getvalue(), "/test.csv", mode=dropbox.files.WriteMode.overwrite)
当我在本地计算机上运行此代码时,数据框通常以.csv文件的形式出现在dropbox上。在EC2上运行相同的代码,我没有收到任何错误,但是创建的.csv是不敏感的

如何修复此问题,使EC2中的.csv文件有意义


OBS:无论我将文件名保留为“/test.csv”还是“/test.xlsx”,我都会遇到相同的问题。

您遇到了一些编码错误。确保数据和写入模式使用相同的编码。例如,如果我运行以下代码:
“abcåäö”.encode(“utf-8”).decode(“拉丁语-1”)
,则输出将是
“abcÃÃè”
@hampusralson感谢您的快速反馈。但是为什么我没有遇到你在本地机器上运行时描述的编码问题呢?它可能基于很多东西,但很可能与操作系统的语言有关。因为我不知道您的数据是如何构造的,所以在这方面我无能为力,但您可以尝试在本地对字符串进行
解码。如果它在您这边看起来不错,并且基于相同的数据,那么它应该正确地将其写入您的文件中。@HampusLarsson,这很有帮助!但我仍在努力破解它。我是否只使用:
pd.read\u csv(文件名,编码='utf-8')
然后我继续尝试不同的编码约定?你有什么建议?