Python 将两个文件的Get内容追加到Powershell中的新文件中会在字符之间插入空格
我正在Powershell中编写以下内容:Python 将两个文件的Get内容追加到Powershell中的新文件中会在字符之间插入空格,python,powershell,Python,Powershell,我正在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/Output
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
f = open("Path/to/OutputFile/OutputFile.txt","rb")
f = f.read()
print f[0:20]
没有什么看起来不寻常的。然后我进入Python,并使用以下代码检查了一个代码段:
Get-Content "Path/to/OutputFile/OutputFile.txt" -totalcount 1
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
。这种奇怪的行为背后有什么解释吗?如果不是因为输出文件正好是我期望的两倍,那么它似乎是Python特有的。我不确定交替空格是如何出现的。任何帮助都将不胜感激。确实有一个解释。您有编码问题。找出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')
希望这有帮助 确实有一个解释。您有编码问题。找出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')
希望这有帮助 原因是输入文本编码为ASCII(每个字符8位),而Out-File cmdlet将文件输出为Unicode(每个字符16位,即大小的两倍)。输出的字符数相同,只是编码不同 如果要将其更改回ASCII(正如您可能期望的那样),请设置
-编码“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
原因是输入文本编码为ASCII(每个字符8位),Out-File cmdlet输出文件为Unicode(每个字符16位,即大小的两倍)。输出的字符数相同,只是编码不同 如果要将其更改回ASCII(正如您可能期望的那样),请设置
-编码“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
正是我需要的。非常感谢。正是我需要的。非常感谢。