繁体   English   中英

Python脚本在Spyder中完美运行(在Windows上) - 在Linux上不起作用

[英]Python script runs perfectly in Spyder (on Windows) - Doesn't work on Linux

我写了一个脚本,它读取.cnf文件,分析一些东西,然后输出一些结果(通过print() )。 要读取.cnf文件,我使用以下行:

with open('config.cnf') as f:
file_content = f.read()

现在如果我在Spyder-Environment(Python 3.6)中运行它,一切正常。 脚本读取config.cnf,执行操作并输出结果。 如果我在Linux上运行完全相同的脚本(config.cnf位于同一目录中),则会显示以下错误消息:

Traceback (most recent call last):
  File "Conf2Monit_V2.py", line 45, in <module>
    file_content = f.read()
  File "/usr/lib/python3.6/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in Position 29834: invalid start byte

我使用以下命令:

python3 myScript.py 

我是Python和Linux的新手,所以如果这是一个基本错误,请不要厌倦。 谢谢。

我猜这个问题可能是因为在不同平台的不同行结束背后历史原因

如果是这种情况,那么请给在尝试

否则你可以试试Linux的iconv命令。

您可以通过在Linux环境中运行以下命令来检查文件中字符的编码:

file -i <filename>

检查输出是否类似于charset=utf-8

如果没有,那么,还有如翻译的编码设置为UTF-8的方式在这里

它解释了如何将文件的编码(“input.txt”)从代码集ISO88592转换为UTF8代码集或ASCII,并将结果存储为“output.txt”。

iconv -f ISO88592 -t UTF8 input.txt output.txt

因此,您可能要遵循的步骤是,如果正在考虑的文件是input.txt:

  1. file -i input.txt
    让我们说它的输出就像是
    input.txt:text / plain; 字符集= ISO-88592
  2. iconv -f ISO88592 -t UTF8 input.txt output.txt

解决方案很简单:

我在Windows编辑器中打开了该文件。 然后在“另存为...”下,我能够将底部的设置从“ASCII”更改为“UTF-8”。 然后我将文件传回我的Linux系统等。 工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM