python新手。我有一个包含> 1000个文本文件的目录。每个文件中包含1到1000行之间的任意位置。我想编写一个简单的python脚本,该脚本可打开并读取目录中的每个文件,计算行数,并且仅在小于或等于500行时才复制该文件。我希望副本保留原始文件名,但是在扩展名前添加_c(即,仅当foo.txt中包含<= 500行时,foo.txt才会复制到foo_c.txt中)。搜寻它似乎需要使用glob和shutil,但似乎无法正确命名我的输出:
import os
import sys
import glob
import shutil
list_of_files = glob.glob('./path/to/directory/*.txt')
for fileName in list_of_files:
with open(fileName) as i:
count = sum(1 for _ in i)
if count <= 500:
shutil.copyfile(fileName, fileName + "_c")
print("copying " + fileName)
else:
pass
它在测试数据集上运行,但是将其命名为输出* .txt_c而不是* _c.txt。所以问题是fileName变量包含扩展名。有什么办法可以在扩展名之前插入_c修改?谢谢。
使用os.path.splitext
该扩展名与文件名的其余部分分离:
import os
import sys
import glob
import shutil
list_of_files = glob.glob('./path/to/directory/*.txt')
for fileName in list_of_files:
with open(fileName) as i:
count = sum(1 for _ in i)
if count <= 500:
root, ext = os.path.splitext(fileName)
shutil.copyfile(fileName, root + "_c" + ext)
print("copying " + fileName)
"_c".join
如果您感到很生疏,可以使用:
import os
import sys
import glob
import shutil
list_of_files = glob.glob('./path/to/directory/*.txt')
for fileName in list_of_files:
with open(fileName) as i:
count = sum(1 for _ in i)
if count <= 500:
splitName = os.path.splitext(fileName)
shutil.copyfile(fileName, "_c".join(splitName))
print("copying " + fileName)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句