【问题标题】:Append an Auto-Incremented number to the end of a file?将自动递增的数字附加到文件的末尾?
【发布时间】:2019-02-22 00:45:24
【问题描述】:

当我运行此脚本时,我想计算save_path 中列出的子目录中的文件数,并将该数字添加到正在创建的新文件中。

例如:

如果C:/xampp/htdocs/add/text/1 文件,名为Text0.php,则该脚本下次运行时应创建一个名为Text1.php 的新文件。

这是我目前的代码:

import os.path

save_path = 'C:/xampp/htdocs/add/text/'
name_of_file = 'Text'
completeName = os.path.join(save_path, name_of_file+".php")

file1 = open(completeName, 'w')
file1.write('it worked')
file1.close()

此脚本创建文件Text.php 并将其保存到C:/xampp/htdocs/add/text/Text.php

我正在寻找C:/xampp/htdocs/add/text/ 中已有多少文件,然后将该数字添加到像这样创建的下一个文件中: Text + 'file_count' + '.php'

logic:
if sub-directory has 1 file:
Text1.php
if sub-directory has 2 files:
Text2.php 
if sub-directory has 3 file:
Text3.php
if sub-directory has 4 files:
Text4.php 

【问题讨论】:

  • 是什么阻止你使用循环?
  • 我认为您可能是对的,我只是不确定如何将持续循环应用于文件创建脚本。可以举个例子吗?
  • 首先使用 os.popen("ls -t file*.txt") 找到有多少文件,这将给你文件列表['file3.txt','file2.txt', 'file1.txt','file.txt']。然后使用 mv 命令遍历列表并重命名每个文件名(file3.txt -> file4.txt、file2.txt -> file3.txt、file1.txt -> file2.txt 和 file.txt -> file1.txt)然后在 file.txt 中添加您的内容

标签: python python-3.x python-2.7 loops makefile


【解决方案1】:

其他人提出的答案帮助我创建了一个程序,每次调用 .py 文件时,它都会计算子目录中的文件数并将其添加到文件名中并创建文件

我使用的代码:

 path, dirs, files = next(os.walk("C:/xampp/htdocs/addfiles/text/"))
 file_count = len(files)
 save_path = 'C:/xampp/htdocs/addfiles/text/'
 name_of_file = 'text'
 completeName = os.path.join(save_path, name_of_file + str(file_count) + ".php")         

运行 3 次后,我得到了:

['text0.php', 'text1.php', 'text2.php'] in the .../text directory 

如果你想先创建 'text1.php' 而不是 'text0.php' 然后更改 file_count

file_count = len(files) + 1

运行 3 次后你会得到:

['text1.php', 'text2.php', 'text3.php']

我还发现在我添加的代码中写入这个新创建的文件真的很容易

page = 'content you want to add to this file'
file1 = open(completeName, 'w+')
csv_writer = csv.writer(file1)
csv_writer.writerow(page)

【讨论】:

    【解决方案2】:

    最好在某种循环中执行此操作。您正在尝试增加值,根据该值和原始名称创建文件的名称,然后使用该值和路径来创建文件。根据您的代码,它可能看起来像这样。

    for i in range(10):
        completeName = os.path.join(save_path, name_of_file+str(i)+".txt") 
        file1 = open(completeName, 'w+')
        toFile = 'it worked'
        file1.write(toFile)
        file1.close()
    

    【讨论】:

    • 一般不要使用固定长度来解决任何问题。在这种情况下,从放置这些文件的路径获取动态范围
    • 我不确定我是否理解您所说的“从放置这些文件的路径中获取动态范围”的意思,您能详细说明一下吗?
    • 这里的动态范围意味着.. 找到路径中已经存在多少文件(使用类似的东西: ls file*.txt )然后根据那个迭代你的循环
    • 将(对于范围(10)中的i)一次计数+1,还是会选择(10)范围内的随机整数?
    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2016-01-10
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多