Я работаю над созданием скрипта для автоматической настройки дисков в системах linux. Одна из моих функций не работает, и, хоть убей, я не могу понять почему.
Я протестировал код на pythontutor.com без ошибок. Когда я запускаю код на своей машине, я не получаю ошибок, но вместо функции, возвращающей данные из файла "disks.txt", я получаю пустые словари.
Я пытался добавить операторы печати в разные моменты процесса, чтобы увидеть, что происходит, но ничего не печатает.
Вот моя функция:
def check_for_disks():
cmd = 'lsblk -l -o name,mountpoint'.split()
driveDict = {}
finalDict = {}
diskFile = open("disks.txt", "w+")
subprocess.Popen(cmd, stdout=diskFile)
diskFile.close()
diskFile = open("disks.txt", "r+")
for line in diskFile.readlines():
dictItem = line.split()
try:
driveDict[dictItem[0]] = dictItem[1]
except(IndexError):
driveDict[dictItem[0]] = "No MountPoint Defined"
diskFile.close()
for k, v in driveDict.items():
if 'sd' in k:
finalDict[k] = v
else:
pass
return finalDict
Эта часть работает безупречно и создает файл, который я хочу, с соответствующей информацией:
def check_for_disks():
cmd = 'lsblk -l -o name,mountpoint'.split()
driveDict = {}
finalDict = {}
diskFile = open("disks.txt", "w+")
subprocess.Popen(cmd, stdout=diskFile)
diskFile.close()
Эта часть не работает:
diskFile = open("disks.txt", "r+")
for line in diskFile.readlines():
Вроде просто файл не открывается. Я проверил файл с помощью ls -la и увидел, что с его разрешениями все в порядке, aka -rw-rw-r -
Я пробовал с open ("disks.txt", "a +") как diskFile :
Я пробовал варианты «r», «r +», «a +»
Я запускал скрипт sudo
Любая помощь приветствуется
ПОЖАЛУЙСТА, СПАСИ МЕНЯ, Я СРАЖАЮСЬ