Откройте и отобразите файл в сценарии python в Linux - PullRequest
0 голосов
/ 01 февраля 2020

Я хотел бы открыть / отобразить файл Excel, который я сохраняю как часть python обработки в сценарии python.

Сохранение части кода работает нормально (ie, он успешно сохраняется, и я открываю и просматриваю из окна Nautilus), но попытка открыть программно выдает ошибки независимо от того, как я это делаю.

Я использовал метод Popen в пакете подпроцесса:

from subprocess import Popen
Popen('./temp/testtest.xlsx')

Дает:

PermissionError: [Errno 13] Permission denied: './temp/testtest.xlsx'

Впоследствии я попытался изменить права доступа к файлу:

import os
from subprocess import Popen

os.chmod('./temp/testtest.xlsx',0o777)
Popen('./temp/testtest.xlsx')

Который дал:

Out[127]: <subprocess.Popen at 0x7faeb22a4b00>invalid file (bad magic number): Exec format error

И против здравого смысла попытался запустить в качестве оболочки:

from subprocess import Popen
Popen('./temp/testtest.xlsx', shell=True)

Который дал:

invalid file (bad magic number): Exec format error 
Out[129]: <subprocess.Popen at 0x7faeb22a46a0>

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

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Аргументом Popen() должна быть команда оболочки, чтобы открыть файл. Если вы используете LibreOffice, программа имеет значение localc; если вы используете OpenOffice, это oocalc.

from subprocess import Popen
import os
f = os.path.join('temp', filename)
Popen(['localc', f])
0 голосов
/ 01 февраля 2020

У вас есть много вариантов здесь. Вы можете установить libreoffice, это офисный пакет с открытым исходным кодом, и вы можете открыть этот файл непосредственно с помощью ooffice —-calc “filename”. Если вы действительно хотите остаться с python, вы можете сохранить данные в файл .csv, а в дистрибутиве pythons anaconda есть библиотека pandas, и вы можете легко прочитать .csv во фрейм данных. import pandas as pd Затем pd.read_csv(“File_name.csv”) возвращает вам фрейм данных, но не забудьте import os и os.chdir(r“/path/to/data”). С этого момента pandas позволяет легко получить доступ к данным для построения или манипулирования.

Вот все функции фрейма данных и посмотрите, соответствует ли он вашему воображению.

Python Pandas DataFrame

...