Индексация в список диктов выдает синтаксическую ошибку, но только в LinuxPython

Программы на Python
Ответить
Anonymous
 Индексация в список диктов выдает синтаксическую ошибку, но только в Linux

Сообщение Anonymous »

Я создаю приложение, которое при запуске в Windows откроет сеанс виртуальной машины Linux, в котором можно запустить определенные части процесса. Я использую систему сохранения/загрузки конфигурации для передачи данных между ними. В настоящее время он настроен очень просто, просто для того, чтобы проверить, могу ли я без проблем отправлять все необходимые данные. Таким образом, он пока не должен вообще зависеть от платформы. Итак, соответствующий код:

Код: Выделить всё

linux_hunt_process.py:

import process_properties as properties
...

if __name__ == "__main__":
properties.init()

if os.path.exists(properties.CONFIG_PATH):
print("Config file found, loading config...")
properties.load_config()
else:
print("Config file not found, creating new config...")
properties.reset_config()

print(properties.CONFIG['target_img'])

Код: Выделить всё

process_properties.py:
import json
import os
import sys

def init():
global DEFAULT_CONFIG
DEFAULT_CONFIG = {...}
global CONFIG
CONFIG = DEFAULT_CONFIG.copy()
...
... # setting up global variables
...
global VIDEO_DEVICE_LIST
VIDEO_DEVICE_LIST = list()
global BLUETOOTH_LIST
BLUETOOTH_LIST = [{}]

def load_config():
global CONFIG
with open(CONFIG_PATH, "r") as configFile:
configData = json.loads(configFile.read())
...
... # copying configData into CONFIG
...

def reset_config():
global CONFIG
CONFIG = DEFAULT_CONFIG.copy()
if sys.platform != "linux":
CONFIG['bluetooth'] = f'{BLUETOOTH_LIST[0]['product']} ({BLUETOOTH_LIST[0]['manufacturer']})' # this is the line 46 mentioned in the error traceback
CONFIG['bluetooth_device'] = BLUETOOTH_LIST[0]
CONFIG['video'] = VIDEO_DEVICE_LIST[0].name
with open(CONFIG_PATH, "x") as configFile:
configFile.write(json.dumps(CONFIG, indent=4))
Когда я запускаю это из Windows, оно без проблем выполняет и печатает нужные данные. Но когда я запускаю его на виртуальной машине Linux, я получаю:

Код: Выделить всё

Traceback (most recent call last):
File "linux_hunt_process.py", line 1, in 
import process_properties as properties
File "/vagrant/process_properties.py", line 46
CONFIG['bluetooth'] = f'{BLUETOOTH_LIST[0]['product']} ({BLUETOOTH_LIST[0]['manufacturer']})'
^
SyntaxError: invalid syntax
Я уверен, что все ключи, используемые для индексации в любых словарях, будут там во всех контекстах. Почему это выдает ошибку в зависимости от платформы?

Подробнее здесь: https://stackoverflow.com/questions/798 ... y-in-linux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»