Вывод в файл не получается. Файл пустой.

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
Здравствуйте! У меня не выводится в файл информация о процессоре из файла /proc/cpuinfo. Нужно только вывести информацию с индексами 0,1,3,4,8. Это информауция о модели, о производители и т.д. Эта часть кода работает, когда я вывожу на экран. Но в файл не получается. Он пустой. Помогите,пожалуйста!


try:
myFile = open("/proc/cpuinfo", "r")
cpuInfo = myFile.read().splitlines()

except:
print("Cannot read content")

finally:
myFile.close()

print("PROCESSORS:\n")

try:
with open ("CPU_INFO.txt", "a") as writeFile:
#writeFile = open("CPU_INFO.txt", "w")
index = 0
for lines in cpuInfo:
if index == 0 or index == 1 or index == 3 or index == 4 or index == 8:
print(lines)
index +=1
writeFile.write(lines)
writeFile.flush()
except:
print("Cannot write to a file")
finally:
writeFile.close()
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте с помощью ... -> код -> python.
У меня не выводится в файл информация о процессоре из файла /proc/cpuinfo
Вот так будет работать:
Python:
try:
    myFile = open("/proc/cpuinfo", "r")
    cpuInfo = myFile.read().splitlines()
except:
    print("Cannot read content")
finally:
    myFile.close()

print("PROCESSORS:\n")

try:
    with open ("CPU_INFO.txt", "w") as writeFile:
        for index, line in enumerate(cpuInfo):
            if index in [0, 1, 3, 4, 8]:
                print(line)
                writeFile.write(f'{line}\n')
except:
    print("Cannot write to a file")
 
  • Мне нравится
Реакции: Екатерина Бун

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
Мне очень нравится Ваше решение! Хочется выразить огромное спасибо за быстрый ответ! Из Вашего кода я узнала о встроенной функции enumeral() и f-string для вывода информации. Скажите, чтобы вывести текст и чтобы самая первая буква была заглавная, нужно организовать массив из line? И к первому члену его применить метод title() ? Была бы признательна за ответ! Спасибо!

Я выкрутилась, написав код:
try:
with open ("CPU_INFO.txt", "a") as writeFile:

writeFile.write('\n')
writeFile.write("PROCESSORS:" + '\n')
index = 0

for lines in cpuInfo:
if index == 0 or index == 1 or index == 3 or index == 4 or index == 8:
writeFile.write('P' + lines + ":" + '\n')
#print(lines)
index +=1
writeFile.write('\n\n')


except:
print("Cannot write to a file")
finally:
writeFile.close()
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Скажите, чтобы вывести текст и чтобы самая первая буква была заглавная, нужно организовать массив из line? И к первому члену его применить метод title()
Да. Вот так можно сделать например:
Python:
try:
    myFile = open("/proc/cpuinfo", "r")
    cpuInfo = myFile.read().splitlines()
except:
    print("Cannot read content")
finally:
    myFile.close()

print("PROCESSORS:\n")

try:
    with open ("CPU_INFO.txt", "w") as writeFile:
        for index, line in enumerate(cpuInfo):
            if index in [0, 1, 3, 4, 8]:
                line = line.split(' ')
                line[0] = line[0].title()
                line = " ".join(line)
                print(line)
                writeFile.write(f'{line}\n')
except:
    print("Cannot write to a file")
 
  • Мне нравится
Реакции: Екатерина Бун

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
Это замечательно простое решение, которое научило меня как разбивать строку по пробелам и выполнять действия с первым членом строки. И потом собирать их обратно в строку, опять разбив по пробелам. Спасибо огромное!!!!!
 

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
Здрвствуйте опять! Скажите, а можно из этой части кода сделать свою функцию?
 

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
Я просто вставила этот блок в функцию и потом вызвала её. Так правильно?

def CpuInfo():

Этот предыдущий блок кода

CpuInfo()

А как бы можно было оформить эту функцию, если бы на вход подавались нужные индексы?
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
А как бы можно было оформить эту функцию, если бы на вход подавались нужные индексы?
Вот пример:
Python:
def cpuinfo(list_of_indexes):
    try:
        myFile = open("/proc/cpuinfo", "r")
        cpuInfo = myFile.read().splitlines()
    except:
        print("Cannot read content")
    finally:
        myFile.close()

    print("PROCESSORS:\n")

    try:
        with open ("CPU_INFO.txt", "w") as writeFile:
            for index, line in enumerate(cpuInfo):
                if index in list_of_indexes:
                    line = line.split(' ')
                    line[0] = line[0].title()
                    line = " ".join(line)
                    print(line)
                    writeFile.write(f'{line}\n')
    except:
        print("Cannot write to a file")
        
cpuinfo([0, 1, 3, 4, 8])
 

Форум IT Специалистов