почему subprocess.runI (['mdfile', filename], capture_output = True) .stdout возвращает пустую строку? - PullRequest
0 голосов
/ 17 июня 2020

Когда я запускаю midi.open('next.midi') из кода

import subprocess
class midi:
    def __init__(self, contents):
        self.contents = contents
    def open(filename):
        subprocess.run(['mv', str(subprocess.run(
            ['mdfind', filename], capture_output = True).stdout).split(
                '\n')[0][2:-3], filename.split(
                    '.')[0] + '.txt'], capture_output = True)
        file = open(filename.split('.')[0] + '.txt')
        contents = file.readlines()
        file.close()
        midi(contents)

, я получаю сообщение об ошибке FileNotFoundError: [Errno 2] No such file or directory: 'next.txt'

после некоторого рытья я обнаружил, что subprocess.run(['mdfind', filename], capture_output = True).stdout вернул пустую строку, когда он должен возвращать путь. Что я делаю не так?

1 Ответ

0 голосов
/ 17 июня 2020

b потому что вам нужно изменить рабочий каталог программы, попробуйте это

import os

после этого выполните

# add this before subprocess.run
os.chdir(directory here)

например, ваш файл находится в каталоге C: \ temp \ вы не можете получить к нему доступ напрямую, потому что он находится в другом каталоге, поэтому для доступа к этому файлу вы должны изменить свой каталог на этот каталог с помощью os.chdir('C:\temp\'), он изменит
каталог на каталог, в котором этот файл хранится

...