Как загрузить файл в приложении PyQt с помощью проводника Windows, открытого с помощью [duplicate]

Доступ к битовому полю реализуется с точки зрения операций над базовым типом. В примере unsigned int . Поэтому, если у вас есть что-то вроде:

  struct x {unsigned int a: 4;  unsigned int b: 8;  unsigned int c: 4;  };   

Когда вы получаете доступ к полю b , компилятор обращается к целому unsigned int , а затем сдвигает и маскирует соответствующий диапазон бит. (Ну, это не для , но мы можем притворяться, что он это делает.)

В случае с большим энтином макет будет примерно таким (самый старший бит вначале):

  
  AAAABBBB BBBBCCCC  

На маленьком конце, макет будет выглядеть следующим образом:

  BBBBAAAA CCCCBBBB  [  ! d16] 

Если вы хотите получить доступ к макету с большим энтиансом из маленького числа endian или наоборот, вам нужно будет сделать дополнительную работу. Это увеличение переносимости имеет ограничение производительности, и поскольку структура структуры уже не переносима, языковые разработчики пошли с более быстрой версией.

Это делает много предположений. Также обратите внимание, что sizeof (struct x) == 4 на большинстве платформ.

9
задан c00kiemonster 1 January 2012 в 16:45
поделиться

5 ответов

В Windows:

  1. Щелкните правой кнопкой мыши файл (я использовал файл .docx для этого примера)
  2. Выберите Open with...
  3. Из списка приложений выберите python
  4. Дополнительно : выберите Always use the selected program to open this kind of file.

Примечание: будет выполняться содержимое файла .docx в контексте оболочки python. Он сразу же закроется после завершения оценки содержимого файла. Если вы хотите отредактировать файл в текстовом редакторе, возможно, вы должны скачать notepad ++ и выбрать это приложение по умолчанию.

-4
ответ дан Droogans 17 August 2018 в 10:50
поделиться
  • 1
    OP хочет, чтобы определенный тип файла открывался с помощью собственного скрипта python , а не самого python. – ekhumoro 1 January 2012 в 22:39

Например, вот универсальное решение, которое я написал для: 1) открытия ссылки рабочего стола Windows (* .URL), которая была скопирована в ящик Linux. Или 2) открытие ссылки Linux .Desktop, которая была скопирована в окно Windows.

Вот сценарий Python, который обрабатывает оба случая:

# UseDesktopLink.py
import sys
import webbrowser
script, filename = sys.argv
file_object = open(filename,'r')
for line in file_object:
    if line[0:4]=="URL=":
        url=line[4:]
        webbrowser.open_new(url)
file_object.close()

В Windows используйте метод Скотта Х (через файл bat) для обработки связи.

В Linux щелкните правой кнопкой мыши файл URL-адресов Windows. Выберите «Свойства» и «Открыть с». Нажмите «Добавить», чтобы добавить новое приложение. Затем в нижней части окна «Добавить приложение» нажмите «Использовать пользовательскую команду». Затем перейдите в файл UseDesktopLink.py и нажмите «Открыть». Но прежде чем вы нажмете «Добавить», в текстовом поле «Использовать пользовательскую команду» поставьте «python» перед именем файла (без кавычек). Затем нажмите «Добавить» и «Закрыть».

Надеюсь, что это поможет.

0
ответ дан Keith Macdonald 17 August 2018 в 10:50
поделиться
  1. Найдите любой файл типа foo
  2. правой кнопкой мыши -> Get Info или щелкните значок файла, затем нажмите Получить информацию или нажмите файл и нажмите Ctrl + I
  3. На появившейся панели Open With выберите путь к бинарнику python
  4. . После того, как вы выбрали, вы можете нажать кнопку change All
  5. Он попросит подтверждения, просто скажите continue
-1
ответ дан Lelouch Lamperouge 17 August 2018 в 10:50
поделиться
  • 1
    Для какой ОС это? – Chris 1 January 2012 в 21:54
  • 2
    Крис, Mac OS X. – Lelouch Lamperouge 2 January 2012 в 00:39
  • 3
    Есть ли способ выбрать файл * .py, а не * .app (который появился из py2app или что-то в этом роде?)? – c00kiemonster 2 January 2012 в 15:45
  • 4
    для файла *.py вам необходимо выполнить вышеуказанные шаги с помощью .py вместо foo на шаге 1 – Lelouch Lamperouge 2 January 2012 в 16:11
  • 5
    Это очень смущает. OP имеет скрипт python, скажем myapp.py и хочет использовать его для автоматического открытия открытых файлов, заканчивающихся на .foo, таких как myfile.foo или что-то еще. Используйте инструкции в этом ответе, но в шаге 3 вместо того, чтобы связывать ваш файл .foo с двоичным кодом python, просто связывайте его с вашим .py-файлом приложения python, например. myapp.py. – Simon Hibbs 30 January 2012 в 15:05

Я нашел этот старый вопрос, ища ответ сам, и я решил поделиться своим решением. Я использовал простую программу c, чтобы направить аргументы на скрипт python, позволяя скрипту python оставаться скриптом вместо необходимости компилировать его, чтобы заставить все работать. Вот моя программа c:

int main(int argc, char *argv[]){
    char cmd[0xFF];
    // For me, argv[1] is the location of the file that is being opened.  I'm not sure if this is different on other OSes
    snprintf(cmd,sizeof cmd,"python YOUR_PYTHON_SCRIPT_HERE.py -a %s", argv[1]);
    system(cmd);
    return 0;
}

Затем я скомпилировал программу c и установил ее как приложение по умолчанию для расширения файла. Затем в скрипте python YOUR_PYTHON_SCRIPT_HERE.py, я получаю такой аргумент:

import sys
assert len(sys.argv) > 2 # Breaks if you call the script without the arguments
theFile = " ".join(sys.argv[2:]) # What the c program gives us 
print(theFile) # Print it out to prove that it works

theFile будет содержать местоположение файла, который открывается. Получите содержимое файла, используя:

with open(theFile,"r") as f:
    fileContents = f.read()
-1
ответ дан potato 17 August 2018 в 10:50
поделиться

Mac OS X

В Mac OS X вы можете использовать Automator для создания приложения, которое вызывает ваше приложение python и передает путь входного файла в виде строкового аргумента. В мастере рабочего процесса приложения добавьте действие «Запустить сценарий оболочки», выберите Pass input: как as arguments, а в текстовом поле добавить:

python /path/to/my/app/myapp.py "$@"

"$@" проходит по всем аргументам в вход (как выбранный файл) в виде строк. Пока ваш скрипт настроен для работы с вводом (sys.argv) в виде списка строк (первый из которых является путём приложения python), тогда он будет работать.

Когда вы сохраняете этот Рабочий процесс Automator обрабатывается OS X, как и любое другое приложение, и вы можете установить это приложение как значение по умолчанию для файлов типа «* .foo». Чтобы связать «* .foo» с этим приложением, щелкните правой кнопкой мыши файл .foo, Get Info, Open with: Other..., выберите приложение, которое вы создали в Automator, затем нажмите кнопку Change All....

Windows

Подобный, но, надеюсь, менее привлекательный подход может работать в Windows. Вероятно, вы можете создать командный файл (.bat) со следующим:

python C:\path\to\my\app\myapp.py %*

%* расширяется ко всем аргументам.

Пока вы можете связать файл расширение с этим пакетным файлом, тогда вы можете это сделать, и это ваше решение. Однако я не пробовал это решение для Windows, поэтому возьмите его с солью. Решение Mac, с другой стороны, я проверил.

3
ответ дан Scott H 17 August 2018 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: