Permalänk
Medlem

Svårigheter lösa Pythonscript

Sökte göra batchscript för CMD, men växlade över till Python istället. Nu är problemet att jag verkar ha stött på någon slags processprioritering som jag har svårt att få rätsida på.

Om jag kör scriptet som det står angivet här, så körs scriptet bara fram till rad 6, och sen avbryter det.
Om jag däremot tar bort nuvarande rad 4 till 6 och kör det då, så går allt bra.

Jag antar att det borde ha något med Pythons indentioner att göra, men hur mycket jag än läser om det så verkar jag ändå inte förstå hur jag ska kunna köra allt detta. Måste man göra alla inputs (rad 4-6) till en egen funktion, eller en if-sats, eller något annat som avgränsar?

(osäker på hur fonten kanske förvränger uppfattning om rader, men rad 10-12 börjar alla på samma tab/indention).

1 import os 2 import subprocess 3 4 SongName = input("Enter song name: ") 5 ArtistName = input("Enter artist name: ") 6 EditName = input("Enter edit name: ") 7 8 for file in os.listdir(r'C:\Users\[username]\Desktop\scripts'): 9 if file.endswith(".wav"): 10 FullFilename = os.path.join(file) 11 ShortFilename = os.path.splitext(file)[0] 12 subprocess.call(['ffmpeg.exe', '-i', FullFilename, ArtistName_+SongName_+Editname_+'.mp3'])

Permalänk
Medlem

Fasen, jag ser nu själv. Jag har gjort fel på rad 12. Jag anropar variablerna SongName, ArtistName, och EditName med ett tillagt underscore. Finns ju inga såna variabler deklarerade. När jag ändrade till ArtistName+'_'+SongName+'_'+EditName+'.mp4' så funkade det.
Men det var bra märkligt att jag inte fick något normalt felmeddelande, utan scriptet bara .. vägrade utföra vidare steg.

Permalänk
Skrivet av Dooley:

9 if file.endswith(".wav"):

Det ser ut som att du använder Windows. Slutar filnamnet med .wav eller med .WAV? Det är lite olika om Windows använder stora eller små bokstäver i ändelsen. Du hittar endast filen om namnet slutar med .wav, inte om det slutar med .WAV. Testa att lägga in lower(): file.lower().endswith(".wav")

Permalänk
Hedersmedlem
Skrivet av Dooley:

Fasen, jag ser nu själv. Jag har gjort fel på rad 12. Jag anropar variablerna SongName, ArtistName, och EditName med ett tillagt underscore. Finns ju inga såna variabler deklarerade. När jag ändrade till ArtistName+'_'+SongName+'_'+EditName+'.mp4' så funkade det.
Men det var bra märkligt att jag inte fick något normalt felmeddelande, utan scriptet bara .. vägrade utföra vidare steg.

Körde du scriptet i en prompt eller bara grafiskt? Det bör ha printat en NameError, men startade du det inte från en kommandoprompt/powershell så kommer fönstret stängas nån millisekund efter att den skrivits ut.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS