Почему эта команда подпроцесса не работает? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь удалить первую и последнюю запятую в каждой строке нескольких файлов txt. Когда я запускаю приведенный ниже скрипт, ни один из in_files не изменяется (т.е. запятые все еще там). Что мне не хватает? Есть ли лучший способ сделать это?

Я нашел команду rev из этой темы .

мой сценарий

import subprocess
from glob import glob

in_files = glob('path/to/files/*.txt')

for fyle in in_files:
    rr = f"rev {fyle} | cut -c2- | rev | cut -c2-"
    subprocess.check_output(['bash', '-c', rr])

in_files (file1.txt)

,-0.12000000000000000,0.0000000000000000,
,-0.11889999999999999,0.0000000000000000,
,-0.11780000000000000,0.0000000000000000,
,-0.11670000000000000,0.0000000000000000,
,-0.11559999999999999,0.0000000000000000,
,-0.11449999999999999,0.0000000000000000,

ожидается

-0.12000000000000000,0.0000000000000000
-0.11889999999999999,0.0000000000000000
-0.11780000000000000,0.0000000000000000
-0.11670000000000000,0.0000000000000000
-0.11559999999999999,0.0000000000000000
-0.11449999999999999,0.0000000000000000

1 Ответ

0 голосов
/ 13 февраля 2020

Вам нужно использовать внешнюю программу или она подойдет вам?

def trim(filename, new_filename):
    with open(filename) as infile:
        with open(new_filename, "w") as outfile:
            for line in infile:
                outfile.write(line.strip(",\n") + "\n")

file_list = ["file1.txt"]
for f in file_list:
    # btw if you want the original file to
    # be overwritten, call `trim(f, f)`
    trim(f, f+"_new.txt")

Это записывает ожидаемый результат в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...