Сохранение файлов в определенную папку. Программа берет неправильный путь
Мне необходимо брать файлы из 'D:\Study\Progs\test\samples' и после обработки сохранять в 'D:\Study\Progs\test"вводимое значение"', но после строчки "name = os.path.abspath(file)" программа берет ложный путь "D:\Study\Progs\test\file.wav", а не "D:\Study\Progs\test\samples\file.wav", в чем может быть причина?
import librosa.display
import matplotlib.pyplot as plt
import os
pa = "./"
save = pa+input()
os.mkdir(save)
for file in os.listdir("./samples"):
if file.endswith(".wav"):
print(file)
name = os.path.abspath(file)
ss = os.path.splitext(name)[0]+".png"
print(name)
audio = name
x, sr = librosa.load(audio, mono=True, duration=5)
save_path = os.path.join(save, ss)
X = librosa.stft(x)
Xdb = librosa.amplitude_to_db(abs(X))
plt.figure(figsize=(20, 10))
librosa.display.specshow(Xdb, sr=sr)
plt.savefig(save_path)
Ответы (2 шт):
Автор решения: Аркадий
→ Ссылка
import librosa.display
import matplotlib.pyplot as plt
import os
pa = "./"
save = pa+input()
os.mkdir(save)
samples = "./samples"
os.chdir(samples)
for file in os.listdir("./samples"):
if file.endswith(".wav"):
print(file)
name = os.path.abspath(file)
ss = os.path.splitext(name)[0]+".png"
print(name)
audio = name
x, sr = librosa.load(audio, mono=True, duration=5)
save_path = os.path.join(save, ss)
X = librosa.stft(x)
Xdb = librosa.amplitude_to_db(abs(X))
plt.figure(figsize=(20, 10))
librosa.display.specshow(Xdb, sr=sr)
plt.savefig(save_path)
Автор решения: Ilya
→ Ссылка
После всех вариантов, найденных в гугле, я пришел к следующей рабочей версии...
import librosa.display
import matplotlib.pyplot as plt
import os
from pathlib import Path
cwd = Path.cwd()
print("Vvedite directoriu dlya sohraneniya resultatov:")
sf = input()
save_folder = cwd / sf
print("Vvedite nazvanie directorii s primerami .wav failov:")
smpl = input()
sample_dir = cwd / smpl
os.mkdir(save_folder)
for file in sample_dir.glob("*.wav"):
print(file)
base = os.path.basename(file)
outfile = os.path.splitext(base)[0] + ".png"
print(f"->{outfile}")
audio = file
x, sr = librosa.load(audio, mono=True, duration=5)
save_path = os.path.join(save_folder, outfile)
X = librosa.stft(x)
Xdb = librosa.amplitude_to_db(abs(X))
plt.figure(figsize=(20, 10))
librosa.display.specshow(Xdb, sr=sr)
plt.savefig(save_path)