我在Powershell中写了以下内容:
Get-Content "Path/to/InputFile1/InputFile1.txt" -totalcount 250| Out-File -FilePath "Path/to/OutputFile/OutputFile.txt" -Append
Get-Content "Path/to/InputFile2/InputFile2.txt" -totalcount 250| Out-File -FilePath "Path/to/OutputFile/OutputFile.txt" -Append
我检查了OutputFile.txt
的大小,发现它的大小正是我预期的两倍。我检查确保使用以下内容在Powershell中看起来一切正常:
Get-Content "Path/to/OutputFile/OutputFile.txt" -totalcount 1
没有什么看起来与众不同。然后我进入Python,并使用以下内容检查了一个片段:
f = open("Path/to/OutputFile/OutputFile.txt","rb")
f = f.read()
print f[0:20]
注意到一个不寻常的输出。虽然初始文件的代码段看起来像00102xxxx,5197609,Je
,但输出文件的代码段如下所示: ■0 0 1 0 2 x x x x
。这个奇怪的行为背后有解释吗?如果不是因为输出文件正好是我预期的两倍,那么它似乎是特定于Python的。我不确定交替的空间是如何发生的。任何帮助将不胜感激。
答案 0 :(得分:4)
原因是输入文本被编码为ASCII(每个字符8位),Out-File cmdlet将文件输出为Unicode(每个字符16位...即大小的两倍)。输出相同数量的字符,只是编码不同。
如果要将其更改回ASCII(如您所料),请设置-Encoding "ASCII"
参数,以使您的文字如下所示:
Get-Content "Path/to/InputFile1/InputFile1.txt" -totalcount 250| Out-File -Encoding "ASCII" -FilePath "Path/to/OutputFile/OutputFile.txt" -Append
Get-Content "Path/to/InputFile2/InputFile2.txt" -totalcount 250| Out-File -Encoding "ASCII" -FilePath "Path/to/OutputFile/OutputFile.txt" -Append
答案 1 :(得分:1)
确实有一个解释。您有编码问题。弄清楚编码Powershell
正在使用,因为是Windows,我假设UCS-2
并在python中执行:
f = open("Path/to/OutputFile/OutputFile.txt","rb")
f = f.read().decode('utf16')
print f[0:20].encode('utf-8')
希望这有帮助!