Python Forum
RuntimeError: can't open file
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RuntimeError: can't open file
#1
In the below code I am trying to import a .dat file that has the IQ data to run in my Python Flask webserver. When I run the program, it crashes and gives me the "RuntimeError: can't open file" error.

Any help to solve the problem will be highly appreciated.

from __future__ import print_function from gnuradio import analog from gnuradio import audio from gnuradio import blocks from gnuradio import eng_notation from gnuradio import gr from gnuradio.eng_option import eng_option from gnuradio.filter import firdes from optparse import OptionParser class TopBlock22(gr.top_block): def __init__(self, sample_rate=32000, amplitude=0, frequency=0): gr.top_block.__init__(self, "Top Block 22") ################################################## # Variables ################################################## self.sample_rate = sample_rate print('[TopBlock22] __init__: sample_rate:', self.sample_rate) self.amplitude = amplitude print('[TopBlock22] __init__: amplitude:', self.amplitude) self.frequency = frequency print('[TopBlock22] __init__: frequency:', self.frequency) ################################################## # Blocks ################################################## self.blocks_add_xx = blocks.add_vff(1) self.audio_sink = audio.sink(32000, '', True) self.analog_sig_source_x_1 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 440, amplitude, 0) self.analog_sig_source_x_0 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 350, amplitude, 0) self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, amplitude, -42) ################################################## # Connections ################################################## self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0)) self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1)) self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0)) def getfile(self, filename): self.filename = filename self.blocks_file_source_0 = blocks.file_source(gr.sizeof_float*1, filename, True) # self.blocks_file_source_0.open(filename, True) # self.connect((self.blocks_file_source_0.open, 0), (self.blocks_add_xx, 3)) # self.connect((self.blocks_file_source_0.open, 0), (self.audio_sink, 0)) # return filename print() def change_sample_rate(self, value=None): if value is not None: self.sample_rate = value print('[TopBlock22] change: sample_rate:', value) self.analog_sig_source_x_1.set_sampling_freq(value) self.analog_sig_source_x_0.set_sampling_freq(value) def change_amplitude(self, value=None): if value is not None: value /= 10000. self.amplitude = value print('[TopBlock22] change: amplitude:', value) self.analog_sig_source_x_1.set_amplitude(value) self.analog_sig_source_x_0.set_amplitude(value) self.analog_noise_source_x_0.set_amplitude(value) def change_frequency(self, value=None): if value is not None: self.frequency = value print('[top_block_22] change: frequency:', value) self.analog_sig_source_x_0.set_frequency(value) def change(self, sample_rate=None, amplitude=None, frequency=None): if sample_rate is not None: self.change_sample_rate(sample_rate) if amplitude is not None: self.change_amplitude(amplitude) if frequency is not None: self.change_frequency(frequency) def turn_off(self): self.change(0, 0, 0) # ----------------------------------------------------------------------------- from flask import Flask, flash, request, redirect, jsonify, render_template_string app = Flask(__name__) tb = TopBlock22(0, 0, 0) tb.getfile('filename') print() tb.start() @app.route("/") def index(): args_filename = request.args.get('filename', '- empty -') return render_template_string('''<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>GNURadio Slider Example</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script> <!-- Previous filename: {{ filename }} --> <form action="getfile" method="POST" enctype="multipart/form-data"> Project file path: <input type="filename" name="filename"><br> <input type="submit" value="Submit"> </form> <style> .slider { position: absolute; align:center; } .row1 {top:100px;} .row2 {top:450px;} .col1 {left:75px;} .col2 {left:470px;} .col3 {left:870px;} </style> </head> <body> <div id="slider1" class='slider row1 col1'></div> <!-- <p>Sample Rate Slider</p> --> <div id="slider2" class='slider row1 col2'></div> <!-- <p>Amplitude Slider2</p> --> <div id="slider3" class='slider row1 col3'></div> <!-- <p>Frequency Slider3</p> --> <div id="slider4" class='slider row2 col1'></div> <!-- <p>Slider4</p> --> <div id="slider5" class='slider row2 col2'></div> <!-- <p>Slider5</p> --> <div id="slider6" class='slider row2 col3'></div> <!-- <p>Slider6</p> --> <button id="turn_off_button">TURN OFF</button> <script> // create sliders $("#slider1").roundSlider({ radius: 150, min: 0, max: 10000, value: 0, // default value at start //change: function(event) { $.getJSON('/valueofslider', {slide1_val: event.value}); } change: function(event) { $.getJSON('/set_sample_rate/' + event.value); } }); $("#slider2").roundSlider({ radius: 150, min: 0, max: 10000, value: 0, // default value at start //change: function(event) { $.getJSON('/valueofslider', {slide2_val: event.value}); } change: function(event) { $.getJSON('/set_amplitude/' + event.value); } }); $("#slider3").roundSlider({ radius: 150, min: 0, max: 10000000000, value: 0, // default value at start //change: function(event) { $.getJSON('/valueofslider', {slide3_val: event.value}); } change: function(event) { $.getJSON('/set_frequency/' + event.value); } }); $("#slider4").roundSlider({ radius: 150, min: 0, max: 10000000000, value: 0, // default value at start change: function(event) { $.getJSON('/valueofslider', {slide4_val: event.value}); } }); $("#slider5").roundSlider({ radius: 150, min: 0, max: 10000000000, value: 0, // default value at start change: function(event) { $.getJSON('/valueofslider', {slide5_val: event.value}); } }); $("#slider6").roundSlider({ radius: 150, min: 0, max: 10000000000, value: 0, // default value at start change: function (event) { $.getJSON('/valueofslider', {slide6_val: event.value}); } }); $("#turn_off_button").click(function(){ // set sliders $("#slider1").data("roundSlider").setValue(0); $("#slider2").data("roundSlider").setValue(0); $("#slider3").data("roundSlider").setValue(0); // send to server $.getJSON('/valueofslider', { slide1_val: 0, slide2_val: 0, slide3_val: 0, }); }); </script> </body> </html>''', filename=args_filename) @app.route('/getfile', methods=['GET','POST']) def getfile(): #print('args:', request.args) #print('form:', request.form) #print('files:', request.files) result = request.files.get('filename') if result: result.save(result.filename) # TODO: save with unique name which couldn't overwrite file with passwords return redirect('/?filename={}'.format(result.filename)) return redirect('/') @app.route('/off') def off(): """Turn off sound.""" tb.turn_off() #return jsonify({'val': 0}) return 'off' @app.route('/set_sample_rate/<int:value>') def set_sample_rate(value): #sound(sample_rate=value) tb.change_sample_rate(value) #return jsonify({'sample_rate': value}) return str(value) @app.route('/set_amplitude/<int:value>') def set_amplitude(value): #sound(amplitude=value) tb.change_amplitude(value) #return jsonify({'amplitude': value}) return str(value) @app.route('/set_frequency/<int:value>') def set_frequency(value): #sound(frequency=value) tb.change_frequency(value) #return jsonify({'frequency': value}) return str(value) @app.route('/valueofslider') def slide(): sample_rate = request.args.get('slide1_val', None) amplitude = request.args.get('slide2_val', None) frequency = request.args.get('slide3_val', None) sound( sample_rate=sample_rate, amplitude=amplitude, frequency=frequency, ) return 'sample_rate: {}, amplitude: {}, frequency : {}'.format(sample_rate, amplitude, frequency ) def sound(sample_rate=None, amplitude=None, frequency=None): """version which uses `change()`""" if sample_rate is not None: sample_rate = int(sample_rate) tb.change_sample_rate(sample_rate) if amplitude is not None: amplitude = int(amplitude) tb.change_amplitude(amplitude) if frequency is not None: frequency = int(frequency ) tb.change_frequency(frequency ) print('[sound] sample_rate:', sample_rate) print('[sound] amplitude:', amplitude) print('[sound] frequency:', frequency) if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
Reply
#2
It would help if you provided the entire traceback, exactly as it appears as it contains useful information about the problem. Also, there's a lot of code there, so it would also help if you could post a minimal yet complete example that demonstrates the problem.
Reply
#3
(Aug-24-2019, 06:01 PM)ndc85430 Wrote: It would help if you provided the entire traceback
Its been a week since I posted this topic and I just noticed that I didn't provide the traceback! Sorry about that! I managed to solve the problem at that time. Thanks for your response though.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Question [SOLVED] Open file, and insert space in string? Winfried 7 2,464 May-28-2025, 07:56 AM
Last Post: Winfried
  RuntimeError: threads can only be started once Raysz 10 6,857 Nov-24-2024, 03:24 PM
Last Post: Raysz
  Trying to open depracated joblib file mckennamason 0 2,006 Sep-19-2024, 03:30 PM
Last Post: mckennamason
  Open/save file on Android frohr 0 2,080 Jan-24-2024, 06:28 PM
Last Post: frohr
  file open "file not found error" shanoger 8 16,017 Dec-14-2023, 08:03 AM
Last Post: shanoger
  How can i combine these two functions so i only open the file once? cubangt 4 2,635 Aug-14-2023, 05:04 PM
Last Post: snippsat
  I cannot able open a file in python ? ted 5 15,024 Feb-11-2023, 02:38 AM
Last Post: ted
  testing an open file Skaperen 7 3,566 Dec-20-2022, 02:19 AM
Last Post: Skaperen
  help RuntimeError: no running event loop marpaslight 5 11,955 Oct-18-2022, 10:04 PM
Last Post: marpaslight
  I get an FileNotFouerror while try to open(file,"rt"). My goal is to replace str decoded 1 2,620 May-06-2022, 01:44 PM
Last Post: Larz60+

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020
This forum uses Lukasz Tkacz MyBB addons.
Forum use Krzysztof "Supryk" Supryczynski addons.