繁体   English   中英

在python中使用递增的字母/数字创建特定大小的文件。

[英]Creating a file of a specific size with incrementing alphabets/numbers in python.

如何创建特定大小(例如1024字节)的文件,并且每行应按递增顺序包含数字或字母。 文件的总大小不应超过1024个字节(即使在输入字母/数字之后也是如此)。

我试过了

def create_file_numbers(filename, size):
    f=open(filename,"wb")
    for x in range(size):
        f.write(str(x))
        f.write('\r\n')
    f.close()
    pass

但这会创建一个文件,其大小远大于1024,编号为1至1023。
我是python的初学者,因此请多解释。

数字的字符串表示形式大于数字,通常每个字符一个,两个或四个字节。 您的\\r\\n也会占用该空间。

max_len = max_size / bytes_per_char
s = ''
i = 0
while len(s) < max_len:
    s += str(i) + '\r\n'
    i += 1
if len(s) > max_len: # because it may not divide evenly
    s = s[:max_len]
open(filename, "wb").write(s)

定义您的字符串:

import string
alphabet = string.digits + string.ascii_letters

然后替换:

f.write(str(x))

有:

f.write(alphabet[x % len(alphabet)])

例如:

>>> import string
>>> alphabet = string.digits + string.ascii_letters
>>> ' '.join(alphabet[x % len(alphabet)] for x in range(200))
'0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 a b c d'

唯一棘手的事情是,数字越大,数字越多。 您可以通过用零填充以使每行大小相同来避免这种情况。 例如,让我们使每行长8个字节。 '\\r\\n'占两个,剩下的6个数字,这绰绰有余。

for n in range(1024/8):
    f.write('%06d\r\n' % n)

要获得不带填充的1024个字节,您将不能从0或1开始。具有一位数字的行占3个字节,两位占4个字节,而占3位则占5个字节。 1024/5 = 204的余数4,因此您希望204行包含三位数,而其中一行包含两位数。 两位数字必须为99,以便下一个数字为三位数字。 所以这工作:

for n in range(99, 304):
    f.write('%d\r\n' % n)

暂无
暂无

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

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