molinchz 发表于 2021-10-31 10:43:22

python 读写文件和生成文件怎样操作

请教 下大佬,python 中怎样写和生成这样的文件,编码 是AscII 。

suchocolate 发表于 2021-10-31 11:03:30

左侧的不是ascii编码,只能说是数据的16进制字节。真正的编码要看文件头。
右侧是文本读取器尝试解析后显示的结果,看起来有中文,应该不是ASCII。
你想实现什么效果,详细说一下。另外把文件发出来。

molinchz 发表于 2021-10-31 11:38:54

suchocolate 发表于 2021-10-31 11:03
左侧的不是ascii编码,只能说是数据的16进制字节。真正的编码要看文件头。
右侧是文本读取器尝试解析后显 ...

大神,软件 生成的文件 是这样在附件里,左侧是16进制的编码,是把右侧的Unicode编码字符转换为ANSI编码字符,然后生成的文件 。


molinchz 发表于 2021-10-31 11:42:23

suchocolate 发表于 2021-10-31 11:03
左侧的不是ascii编码,只能说是数据的16进制字节。真正的编码要看文件头。
右侧是文本读取器尝试解析后显 ...

我这意图是想把688551   变成文件中的01 00 36 38 35 35 31 00 00 00 00 00 00 00 0000 这样存放。这样来用软件创建这二个文件

hrpzcf 发表于 2021-10-31 12:10:53

本帖最后由 hrpzcf 于 2021-10-31 12:15 编辑

就是把文件的每个字节值都转成十六进制字符形式呗?

molinchz 发表于 2021-10-31 12:26:45

hrpzcf 发表于 2021-10-31 12:10
就是把文件的每个字节值都转成十六进制字符形式呗?

是的,

molinchz 发表于 2021-10-31 12:44:55

hrpzcf 发表于 2021-10-31 12:40
大概大概:

老师,文件 生成的是16进制的, 也是还要补位00 ,不然软件 是读不到的

hrpzcf 发表于 2021-10-31 12:49:43

molinchz 发表于 2021-10-31 12:44
老师,文件 生成的是16进制的, 也是还要补位00 ,不然软件 是读不到的

唉,回复几个都被审核

molinchz 发表于 2021-10-31 12:54:00

hrpzcf 发表于 2021-10-31 12:49
唉,回复几个都被审核

我都 看不到哦

molinchz 发表于 2021-10-31 13:45:54

hrpzcf 发表于 2021-10-31 12:40
大概大概:

这个文件 生成的就没有补位

molinchz 发表于 2021-10-31 13:49:11

请老师帮忙看下先创建生成这个*.cis文件

hrpzcf 发表于 2021-10-31 14:01:37

molinchz 发表于 2021-10-31 13:49
请老师帮忙看下先创建生成这个*.cis文件

你是想要生成二进制文件啊,我还以为是要读取二进制文件显示出来,那生成文件是依据哪个文件的数据呢?

molinchz 发表于 2021-10-31 14:07:19

hrpzcf 发表于 2021-10-31 14:01
你是想要生成二进制文件啊,我还以为是要读取二进制文件显示出来,那生成文件是依据哪个文件的数据呢?

["688700","300012","003300","603812"]比如 这个数据

molinchz 发表于 2021-10-31 14:23:43

论坛怎么啦,回复看不到

hrpzcf 发表于 2021-10-31 15:35:47

molinchz 发表于 2021-10-31 14:23
论坛怎么啦,回复看不到

回复被吞就随便写吧{:10_250:}
source = ["688700", "300012", "003300", "603812"]

with open("xx.cis", "ab") as cis:
    for string in source:
      bytel = bytes((1, 0)) + bytes(string, "utf-8")
      ba_length = len(bytel)
      if ba_length < 16:
            bytel += bytes(16 - ba_length)
      cis.write(bytel)


molinchz 发表于 2021-10-31 16:01:20

hrpzcf 发表于 2021-10-31 15:35
回复被吞就随便写吧

大佬,6字开头,最前面 一字节 是01,其它是00

hrpzcf 发表于 2021-10-31 16:12:52

molinchz 发表于 2021-10-31 16:01
大佬,6字开头,最前面 一字节 是01,其它是00

sl = ["688700", "300012", "003300", "603812"]

prefix0 = bytes((0, 0))
prefix1 = bytes((1, 0))
with open("xx.cis", "ab") as cisf:
    for string in sl:
      if string.startswith("6"):
            prefix = prefix1
      else:
            prefix = prefix0
      bytel = prefix + bytes(string, "utf-8")
      bl_length = len(bytel)
      if bl_length < 16:
            bytel += bytes(16 - bl_length)
      cisf.write(bytel)

molinchz 发表于 2021-10-31 16:31:32

hrpzcf 发表于 2021-10-31 16:12


可以了,辛苦了大佬,下次另一个有中文就麻烦 了!!!!

hrpzcf 发表于 2021-10-31 16:36:55

molinchz 发表于 2021-10-31 16:31
可以了,辛苦了大佬,下次另一个有中文就麻烦 了!!!!

知道转换规律就不难,不知道转换规律,不管是不是中文都麻烦

molinchz 发表于 2021-10-31 16:44:11

hrpzcf 发表于 2021-10-31 16:36
知道转换规律就不难,不知道转换规律,不管是不是中文都麻烦

我先研究下,不行在请教下你,非常感谢
页: [1] 2
查看完整版本: python 读写文件和生成文件怎样操作