Найти - Пользователи
Полная версия: Чтение из файла по условию
Начало » Python для новичков » Чтение из файла по условию
1 2
Ubhra
Добрый день.
Проверил наличие файла:
if os.path.exists('file.txt')
В файле всего 3 строки.
Как проверить кодировку файла utf-8, а так же:
1 строка целое число 1000> x > 100
2 строка целое число 5000 > x > 500
3 число логическое true или false.

П.С. Если тип данных не совпадает или отсутствуют нужные строки, то хочу удалить файл создать новый. Проблема в том что он уже открыт. Пытаюсь закрыть.
if os.path.exists('file.txt'):
    os.close('file.txt')
    os.remove('file.txt')
Пишет ошибку os.close('file.txt') TypeError: an integer is required
Но как же так? В справке написано os.close(fd), как я директорией укажу 1 или 0?
П.П.С. Вот может и не понимаю, но как то туповато получилось.
if os.path.exists('file.txt'):
    r = open('file.txt')
    r.close()
    os.remove('file.txt')
Почему же тогда remove не требует того же что и close???
py.user.next
Ubhra
Как проверить кодировку файла utf-8, а так же:
1 строка целое число 1000> x > 100
2 строка целое число 5000 > x > 500
3 число логическое true или false.
кодировку не проверяют, её знают и указывают при открытии
лучше приведи пример правильного файла
Ubhra
Насчет кодировки прочел что по умолчанию сохраняет в utf-8, что вполне приемлемо.
А вот с проверкой строк проблема.

В общем вот так как то:
if os.path.exists('file.txt'):
    r_i = open('file.txt')
.........................
.........................
    r_i.close()
#    os.remove('file.txt')
else:
    open('file.txt', "w")
А это содержимое файла:
300
700
True
pyuser
if os.path.exists('file.txt'):
    with open("file.txt", "rt", encoding="utf-8") as f:
        try:
            if 100 < int(next(f)) < 1000:
                if 500 < int(next(f)) < 5000:
                    if next(f).strip() in ("False", "True"):
                        # все условия выполнены
        except ValueError:
            # в строке не число
else:
    ...
Ubhra
Не проходит
if os.path.exists('file.txt'):
    with open("file.txt", "rt", encoding="utf-8") as f:
Сразу перескакивает на
except ValueError:
Ubhra
Тут результат print('yes')
import os
if os.path.exists('file.txt'):
    with open("file.txt", "rt", encoding="utf-8") as f_l:
        try:
            print('yes')
        except ValueError:
            print('error')
else:
    print('no')

А если так, то результат print('error')
import os
if os.path.exists('file.txt'):
    with open("file.txt", "rt", encoding="utf-8") as f_l:
        try:
            if 100 < int(next(f_l)) < 1000:
                if 500 < int(next(f_l)) < 5000:
                    if 600 < int(next(f_l)) < 5000:
                        print('yes')
        except ValueError:
            print('error')
else:
    print('no')
FishHook
При той же структуре файла должен написать error
FishHook
А это содержимое файла:
300 - A
700 - B
True -C

import os
if os.path.exists('file.txt'):
    with open("file.txt", "rt", encoding="utf-8") as f_l:
        try:
            if 100 < int(next(f_l)) < 1000: #A
                if 500 < int(next(f_l)) < 5000: #B
                    if 600 < int(next(f_l)) < 5000: #C 
                        print('yes')
        except ValueError:
            print('error')
else:
    print('no')
“True” к int никак не преобразовывается
Ubhra
Заменил на что проще:
300
700
800
FishHook
И? все работает

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB