शुरू करने के लिए, मैं पायथन के बारे में बहुत कम जानता हूं। मैं एक अन्य पोस्ट में मिली एक स्क्रिप्ट का उपयोग करके एक सीएसवी को एक WAV फ़ाइल में कनवर्ट करने का प्रयास कर रहा हूं। सबसे अच्छा मैं यह बता सकता हूं कि यह मेरे द्वारा उपयोग किए जा रहे अजगर के पुराने संस्करण के लिए लिखा गया था। एक त्रुटि जो मुझे मिल रही है वह संस्करण अंतर के कारण है, मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए। दूसरी त्रुटि पाइथन के साथ मेरी अज्ञानता के कारण हो सकती है, लेकिन मुझे इसके बारे में निश्चित नहीं है।
पहली त्रुटि है:
Python\CVS-WAV2.py:44: DeprecationWarning: 'U' मोड समय के लिए बहिष्कृत है, csv.reader में मान (खुला (fname, 'U'), delimiter=','):
मुझे पता है कि पायथन 3 में 'यू' को न्यूलाइन = के साथ "कोई नहीं, '\ n', '\ r', या '\ n \ r' के साथ बदल दिया गया है। न्यूलाइन फ़ंक्शन पर पढ़ने के बाद मुझे लगता है कि "कोई नहीं "वह विकल्प है जो मुझे चाहिए।
एक बार जब मैं 'U' को newlinw=none में बदल देता हूं, तो मेरी पहली त्रुटि दूर हो जाती है, लेकिन जब मैं स्क्रिप्ट चलाता हूं तब भी मुझे निम्नलिखित मिलते हैं:
फ़ाइल "\Python\CVS-WAV2.py", पंक्ति 43, समय के लिए, csv.reader में मान (खुला(fname, newline='\n'), delimiter=','): ValueError: करने के लिए पर्याप्त मान नहीं अनपैक (अपेक्षित 2, मिला 0)
हालांकि मुझे यकीन नहीं है कि इस त्रुटि को कैसे हल किया जाए।
#!/usr/bin/python
import wave
import struct
import sys
import csv
import numpy
from scipy.io import wavfile
from scipy.signal import resample
def write_wav(data, filename, framerate, amplitude):
wavfile = wave.open(filename,'w')
nchannels = 1
sampwidth = 2
framerate = framerate
nframes = len(data)
comptype = "NONE"
compname = "not compressed"
wavfile.setparams((nchannels,
sampwidth,
framerate,
nframes,
comptype,
compname))
frames = []
for s in data:
mul = int(s * amplitude)
frames.append(struct.pack('h', mul))
frames = ''.join(frames)
wavfile.writeframes(frames)
wavfile.close()
print("%s written" %(filename))
if __name__ == "__main__":
if len(sys.argv) <= 1:
print ("You must supply a filename to generate")
exit(-1)
for fname in sys.argv[1:]:
data = []
for time, value in csv.reader(open(fname, newline=None), delimiter=','):
try:
data.append(float(value))#Here you can see that the time column is skipped
except ValueError:
pass # Just skip it
arr = numpy.array(data)#Just organize all your samples into an array
# Normalize data
arr /= numpy.max(numpy.abs(data)) #Divide all your samples by the max sample value
filename_head, extension = fname.rsplit(".", 1)
data_resampled = resample( arr, len(data) )
wavfile.write('rec.wav', 2000, data_resampled) #resampling at 2khz
print ("File written succesfully !")
किसी भी तरह की सहायता का स्वागत किया जाएगा!!
1 उत्तर
आपकी CSV फ़ाइल में संभवतः रिक्त पंक्तियाँ हैं। उन पर छोड़ने का एक तरीका निम्नलिखित का उपयोग करना है:
for record in csv.reader(open(fname, newline=None), delimiter=','):
if not record:
continue
time, value = record
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।