写入文件的行长度限制

0 投票
1 回答
2461 浏览
提问于 2025-04-18 06:45

我一直在尝试根据同一目录下特定文件名的要求,把内容写入一个文件。我还需要根据另一个日志文件(作为输入提供)中的文件名进行搜索,以及文件的修改日期来进行操作。


    def getFiles(flag, file):

        if (flag == True):
            file_version = open(file)
            if file_version:
                s = mmap.mmap(file_version.fileno(), 0, access=mmap.ACCESS_READ)
            file_version.close()

        file = open('AllModules.txt', 'wb')
        for i, values in dict.items():
            # search keys in version file
            if (flag == True):
                index = s.find(bytes(i))
                if index > 0:
                    s.seek(index + len(i) + 1)
                    m = s.readline()
                    line_new = '{:>0}  {:>12} {:>12}'.format(i, m, values)
                    file.write(line_new)
                    s.seek(0)
            else:
                file.write(i +'\n')

        file.close()


    if __name__ == '__main__':
        dict = {}
        for file in os.listdir(os.getcwd()):
            if os.path.splitext(file)[1] == '.psw' or os.path.splitext(file)[1] == '.pkw':
                time.ctime(os.path.getmtime(file))
                dict.update({str(os.path.splitext(file)[0]).upper():time.strftime('%d/%m/%y')})
        if (len(sys.argv) > 1) :
            if os.path.exists(sys.argv[1]):
                getFiles(True, sys.argv[1])
        else:
            getFiles(False, None)

输出的内容每行都限制在80个字符以内。


    BW_LIB_INCL         13.1 rev. 259 [20140425 16:28]
         16/05/14

输出的格式总是这样:

数据的解释是正确的,但格式不对,因为时间被放在了下一行(而不是同一行)。

这种情况发生在我新文件的所有行上。

有人能给我一点提示吗?

1 个回答

0

m = s.readline() 这行代码会把一整行读进来,最后会带一个换行符\n。接着你用.format(i, m, values)m放到字符串中间去写。

我留给读者自己去思考,当你把这样的内容写入文件时会发生什么。:-)

(提示:可以用m = s.readline().rstrip('\n')来去掉换行符)

撰写回答