Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python创建的pbm文件仅在复制&;粘贴到新的文本文件中_Python_Command Line_Text Files_Pbm - Fatal编程技术网

使用Python创建的pbm文件仅在复制&;粘贴到新的文本文件中

使用Python创建的pbm文件仅在复制&;粘贴到新的文本文件中,python,command-line,text-files,pbm,Python,Command Line,Text Files,Pbm,当我创建一个.pbm格式的随机图像(下面的代码)并将结果输出到一个.pbm文件中时,该文件似乎已损坏(例如无法使用GIMP打开)。但是,如果我用文本编辑器(例如记事本)打开文件,并将内容复制到手动创建的新文本文件中,则效果良好 我还尝试将图像输出为.txt并手动将其更改为.pbm,如果不手动创建一个新的文本文件并复制和粘贴内容,也无法工作。我还注意到,与手动创建的具有相同内容的文本文件相比,Python创建的文本文件的大小更大(大约是两倍) 你们知道用python创建的.txt文件与手动创建的具

当我创建一个.pbm格式的随机图像(下面的代码)并将结果输出到一个.pbm文件中时,该文件似乎已损坏(例如无法使用GIMP打开)。但是,如果我用文本编辑器(例如记事本)打开文件,并将内容复制到手动创建的新文本文件中,则效果良好

我还尝试将图像输出为.txt并手动将其更改为.pbm,如果不手动创建一个新的文本文件并复制和粘贴内容,也无法工作。我还注意到,与手动创建的具有相同内容的文本文件相比,Python创建的文本文件的大小更大(大约是两倍)

你们知道用python创建的.txt文件与手动创建的具有相同内容的文件有什么不同吗

非常感谢

.pbm文件是在windows命令行中使用以下命令创建的:

python random_image 20 10 > image.pbm
使用的代码:

import random
import sys

width = int(sys.argv[1]) #in pixel
height = int(sys.argv[2]) #in pixel

def print_image(width, height):

    image=[[" " for r in range(height)] for c in range(width)]

    print("P1 {} {}".format(width, height))

    for r in range(height):
        for c in range(width):
            image[c][r]=random.getrandbits(1)
            print (image [c][r], end='')
        print()

print_image(width, height) 

我自己也测试过代码。我不确定复制和粘贴是如何为您工作的(它对我不起作用),但您的代码似乎产生了类似的结果

P1 5 5
01101
01100
11010
01110
11000
但是pbm格式要求位之间有空格,因此为了正确显示图片,必须生成如下内容

P1 5 5
0 0 1 1 1 
1 0 0 1 0 
1 1 0 1 0 
1 1 0 0 1 
1 1 1 1 1 
要得到这个结果,只需更改位的print语句,使其末尾包含一个空格

print (image [c][r], end=' ') # notice the space

谢谢,奥尔德莱,即使有空格,问题对我来说还是一样的。如果文件是由Python创建的,GIMP将抛出一个“无效文件”错误。没有空格的复制粘贴绝对适合我。我确保将所有内容复制到手动创建的pbm文件中(包括所有空白),以确保内容完全相同。我觉得Python创建的文件更大是一个很好的指标。如果内容完全相同,为什么文件大小会不同呢?嗯。。我可能不知道解决方案,但我可以推荐一种调试方法。将生成的pbm文件的内容打印为ascii`[ord(c)for c in file_str],并将其与复制的字符串进行比较。你可能会发现你意想不到的隐形角色,这可能是一个线索。