Непреднамеренная полоса символов при чтении файла .txt в Python - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть скрипт Python, который считывает имена таблиц БД из файла .txt, выполняет для них набор SQL-операторов и экспортирует файл .CSV с результатами. Файл .txt выглядит так:

TableA
TableB
TableC

У меня есть код, который читает этот файл, выглядит так:

f = open("table.txt", "r")
for s in f:
    cfg_tbl = s[0:len(s) -1]
    func_1(cfg_tbl)
f.close()

(func_1 - это внешняя функция, которая выполняет sql, не важно)

Проблема, с которой я столкнулся, заключается в том, что когда я сохраняю файл .txt и курсор находится рядом с буквой «C» в «TableC», буква «C» усекается. Я должен сохранить файл с дополнительным пробелом после последней таблицы, чтобы он работал. Но если я изменю это:

cfg_tbl = s[0:len(s) -1]

к этому:

cfg_tbl = s[0:len(s)]

выдает ошибку:

Invalid argument: 'TableA \n.csv'

Любые идеи о том, как читать файл .txt без необходимости учитывать дополнительные пробелы или даже пустые строки и т. Д.

Спасибо

1 Ответ

0 голосов
/ 25 апреля 2018

Вы используете s[0:len(s) -1] для удаления новой строки в конце каждой строки. Проблема в том, что последняя строка файла не заканчивается новой строкой, поэтому вы удаляете последний символ имени файла с этим.

Используйте метод strip() для удаления начальных и конечных пробелов из строки.

cfg_tbl = s.strip()

Если нет новой строки, она ничего не удалит.

Кстати, s[0:len(s) -1] можно записать более просто как s[:-1]. Когда конец фрагмента отрицательный, он считается от конца.

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