Home > Software design >  Errno2 no such file or directory
Errno2 no such file or directory

Time:06-08

i've been trying to run sox in a python script but it can't the output file and gives me [errno2]

def AudioToSpectrogram(self, files, pixel_per_sec, height, width):

file_name = ("tmp_{}.png").format(random.randint(0, 100000))

command  = "sox -V0 {} -n remix 1 rate 10k spectrogram -y {} -x {} -X {} -m -r -o {}".format(files, height, width, pixel_per_sex, file_name)
p = Popen(command, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)

Output, errors = p.communicate()
If errors:
   Print(errors)

Image = Image.open(file_name)
Os.remove(file_name)

Return np.array(image)

This is the error it gives

Exception: [errno2] No such file or Directory: 'tmp_47483.png' 

I hope you could give me some pointers since i am still new in this field, thanks in advance!

CodePudding user response:

Assuming tmp_47483.png is in fact being created, the problem is likely that the command is placing the file in a different folder and Python can't find it inside the current working directory. The

# manually set the full path (make sure the backslashes are escaped by putting two each)
file_name = f"C:\\Full\\Path\\To\\File\\tmp_{random.randint(0, 100000}.png"

# use the os module to join the path
base_dir = "C:\\Full\\Path\\To\\File"
file_name = os.path.join(base_dir, f"tmp_{random.randint(0, 100000}.png")

# if you want it to appear in the same folder as your script:
CWD = os.path.dirname(os.path.realpath(__file__))    # mostly fool-proof way of getting a script's Current Working Directory
file_name = os.path.join(CWD, f"tmp_{random.randint(0, 100000}.png")

Try these and see if they help. If not, make sure that command is actually working and outputting a file somewhere.

  • Related