powershell 我如何进入一个目录中的所有文本文件,并删除第二个空格后的所有内容?

xhv8bpkk  于 2023-03-18  发布在  Shell
关注(0)|答案(3)|浏览(134)

我有这样一个目录:

每个文本文件都包含以下信息:

106 114 24 25 1 0
705 79 19 21 1 0
661 361 30 37 1 0
212 332 30 37 1 0
704 236 20 25 1 0
620 404 30 37 1 0
615 248 20 25 1 0
641 165 20 25 1 0
676 47 19 21 1 0

我正在尝试编写一个脚本(windows11),它可以进入这个目录,访问每个文本文件,并删除第二个空格后的所有内容。
基本上,我希望新的文本文件如下所示:

106 114
705 79
661 361
212 332
704 236
620 404
615 248
641 165
676 47

该脚本也可以使用python

pjngdqdw

pjngdqdw1#

import os

directory = '/path/to/directory'

for filename in os.listdir(directory):
    if filename.endswith('.txt'):
        with open(os.path.join(directory, filename), 'r+') as file:
            lines = file.readlines()
            file.seek(0)
            for line in lines:
                words = line.split()
                new_line = ' '.join(words[:2]) + '\n'
                file.write(new_line)
            file.truncate()

将/path/to/directory替换为目录的路径

oewdyzsn

oewdyzsn2#

这应该行得通:

import os

DIR = '/path'

for listed_file in os.listdir(DIR):
    if listed_file.endswith(".txt"):
        with open(listed_file, 'r') as file:
            final_lines = []
            for line in file.readlines():
                new_line = " ".join(line.split()[:2]) + "\n"
                final_lines.append(new_line)
        file = open(listed_file, 'w')
        file.writelines(final_lines)

它将遍历DIR中的每个文件,检查它是否是txt文件,然后获取它的行并用新的拆分行重写它。

llmtgqce

llmtgqce3#

PowerShell版本:

Get-ChildItem .\*.txt |Foreach-Object {
    (Select-String -LiteralPath $_ -Pattern '^\S+\s\S*').Matches |
    Set-Content -LiteralPath $_
}

相关问题