Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. 30 Sekunden lang überprüfen ob Datei existiert

30 Sekunden lang überprüfen ob Datei existiert

Scheduled Pinned Locked Moved Unsolved German
14 Posts 3 Posters 1.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    NotYourFan
    wrote on last edited by
    #1

    Hey leute,

    ich triggere über einen Button-click in Qt ein python skript an.

    Dieses Skript wiederum liest eine serielle Schnittstelle und erzeugt eine json-Datei unter D: (D:\test.json)

    Nun möchte ich in der Funktion nach "executePython" (executePython ist meine Funktion die das Skript ausführt) 30 Sekunden lang überprüfen ob eine Datei namens "test.json" (D:\test.json) existiert.

    void XYZ::on_serialInteraceButton_clicked()
    {
    executePython("interace.py")
    
    }
    

    ich dachte an eine while-Schleife, jedoch hab ich keine Ahnung wie ich das programmieren muss … jemand ein Idee bzw. ein Gedankenstoß ?

    J.HilkJ jsulmJ 2 Replies Last reply
    0
    • N NotYourFan

      Hey leute,

      ich triggere über einen Button-click in Qt ein python skript an.

      Dieses Skript wiederum liest eine serielle Schnittstelle und erzeugt eine json-Datei unter D: (D:\test.json)

      Nun möchte ich in der Funktion nach "executePython" (executePython ist meine Funktion die das Skript ausführt) 30 Sekunden lang überprüfen ob eine Datei namens "test.json" (D:\test.json) existiert.

      void XYZ::on_serialInteraceButton_clicked()
      {
      executePython("interace.py")
      
      }
      

      ich dachte an eine while-Schleife, jedoch hab ich keine Ahnung wie ich das programmieren muss … jemand ein Idee bzw. ein Gedankenstoß ?

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      Moin @notyourfan

      ich denke, wonach du eigentlich suchst is:

      https://doc.qt.io/qt-5/qfilesystemwatcher.html

      Damit kannst du dann ein Signal bekommen sobald die Datei gelöscht wurde


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      2
      • N NotYourFan

        Hey leute,

        ich triggere über einen Button-click in Qt ein python skript an.

        Dieses Skript wiederum liest eine serielle Schnittstelle und erzeugt eine json-Datei unter D: (D:\test.json)

        Nun möchte ich in der Funktion nach "executePython" (executePython ist meine Funktion die das Skript ausführt) 30 Sekunden lang überprüfen ob eine Datei namens "test.json" (D:\test.json) existiert.

        void XYZ::on_serialInteraceButton_clicked()
        {
        executePython("interace.py")
        
        }
        

        ich dachte an eine while-Schleife, jedoch hab ich keine Ahnung wie ich das programmieren muss … jemand ein Idee bzw. ein Gedankenstoß ?

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #3

        @notyourfan Keine Schleife, da das die Event-Loop blockieren würde!
        Es gibt https://doc.qt.io/qt-5/qfilesystemwatcher.html für sowas.

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        2
        • N Offline
          N Offline
          NotYourFan
          wrote on last edited by
          #4

          Moin @J-Hilk,

          ich möchte kein Signal bekommen sobald die Datei gelöscht wurde, sondern ein Signal sobald die Datei im Ordner erscheint :)

          Ist das mit dem watcher auch möglich?

          Danke.

          J.HilkJ 1 Reply Last reply
          0
          • N NotYourFan

            Moin @J-Hilk,

            ich möchte kein Signal bekommen sobald die Datei gelöscht wurde, sondern ein Signal sobald die Datei im Ordner erscheint :)

            Ist das mit dem watcher auch möglich?

            Danke.

            J.HilkJ Offline
            J.HilkJ Offline
            J.Hilk
            Moderators
            wrote on last edited by J.Hilk
            #5

            @notyourfan beides ist möglich,

            hatte anscheinend deine Situation nur falsch verstanden


            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


            Q: What's that?
            A: It's blue light.
            Q: What does it do?
            A: It turns blue.

            1 Reply Last reply
            0
            • N Offline
              N Offline
              NotYourFan
              wrote on last edited by
              #6

              Okay,

              hab mich mal eben kurz "reingefuchst" :D

              void QFileSystemWatcher::directoryChanged(const QString & path)
              

              "This signal is emitted when the directory at a specified path, is modified (e.g., when a file is added, modified or deleted) or removed from disk"

              Genau das habe ich gesucht, danke !!

              Nur mal eben eine Verständnisfrage …

              was muss ich an "const QString" übergeben?
              "path" ist klar, der bekommt den Dateipfad.
              Ist "const QString" der Dateiname?

              jsulmJ J.HilkJ 2 Replies Last reply
              0
              • N NotYourFan

                Okay,

                hab mich mal eben kurz "reingefuchst" :D

                void QFileSystemWatcher::directoryChanged(const QString & path)
                

                "This signal is emitted when the directory at a specified path, is modified (e.g., when a file is added, modified or deleted) or removed from disk"

                Genau das habe ich gesucht, danke !!

                Nur mal eben eine Verständnisfrage …

                was muss ich an "const QString" übergeben?
                "path" ist klar, der bekommt den Dateipfad.
                Ist "const QString" der Dateiname?

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by jsulm
                #7

                @notyourfan said in 30 Sekunden lang überprüfen ob Datei existiert:

                was muss ich an "const QString" übergeben?

                Nichts, das bekommst du als Parameter in deinem slot.
                Du verbindest gans normal dein Slot mit diesem Signal.

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • N NotYourFan

                  Okay,

                  hab mich mal eben kurz "reingefuchst" :D

                  void QFileSystemWatcher::directoryChanged(const QString & path)
                  

                  "This signal is emitted when the directory at a specified path, is modified (e.g., when a file is added, modified or deleted) or removed from disk"

                  Genau das habe ich gesucht, danke !!

                  Nur mal eben eine Verständnisfrage …

                  was muss ich an "const QString" übergeben?
                  "path" ist klar, der bekommt den Dateipfad.
                  Ist "const QString" der Dateiname?

                  J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by J.Hilk
                  #8

                  @notyourfan
                  wenn du eine Datei beobachten willst, dann ist es der Pfad zur Datei inklusive Dateiname und Endung dem KonstruktivConstructor zu übergeben.

                  Wenn Ordner, dann nur Pfad des Ordners inkl Ordnername.

                  Aber reine Vermutung, hab die Klasse selbst noch nicht benutzt 🤷‍♂️


                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                  Q: What's that?
                  A: It's blue light.
                  Q: What does it do?
                  A: It turns blue.

                  N 1 Reply Last reply
                  1
                  • N Offline
                    N Offline
                    NotYourFan
                    wrote on last edited by
                    #9

                    Naja, das ist die nächste Frage.
                    Sobald ich mein Button clicke wird die folgende Funktion ausgeführt:

                    void XYZ::on_serialInteraceButton_clicked()
                    {
                         executePython("interace.py")
                    }
                    

                    und mein Skript wird dann ebenfalls ausgeführt.
                    Danach (vorausgesetzt mein Skript läuft erfolgreich durch und erzeugt eine JSON-Datei) wird eine Datei erzeugt und unter "D:" abgelegt.

                    Was genau soll ich dann mit dem "Signal" anfangen?

                    Weil theoretisch muss ich direkt nach "executePython("interface.py") 30 Sekunden lang überprüfen ob da eine Datei "geändert" worden ist.

                    jsulmJ 1 Reply Last reply
                    0
                    • J.HilkJ J.Hilk

                      @notyourfan
                      wenn du eine Datei beobachten willst, dann ist es der Pfad zur Datei inklusive Dateiname und Endung dem KonstruktivConstructor zu übergeben.

                      Wenn Ordner, dann nur Pfad des Ordners inkl Ordnername.

                      Aber reine Vermutung, hab die Klasse selbst noch nicht benutzt 🤷‍♂️

                      N Offline
                      N Offline
                      NotYourFan
                      wrote on last edited by
                      #10

                      @j-hilk ich hab die Klasse selbst leider auch noch nicht benutzt :S

                      J.HilkJ 1 Reply Last reply
                      0
                      • N NotYourFan

                        @j-hilk ich hab die Klasse selbst leider auch noch nicht benutzt :S

                        J.HilkJ Offline
                        J.HilkJ Offline
                        J.Hilk
                        Moderators
                        wrote on last edited by
                        #11

                        @notyourfan
                        wenn du deinen Zielordner überwachst, und dein Skript die Datei erstellt, wird das signal directoryChanged(const QString &path) ausgelöst. in der Variable path steht nun der Pfad + Name der neuen Datei


                        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                        Q: What's that?
                        A: It's blue light.
                        Q: What does it do?
                        A: It turns blue.

                        N 1 Reply Last reply
                        1
                        • J.HilkJ J.Hilk

                          @notyourfan
                          wenn du deinen Zielordner überwachst, und dein Skript die Datei erstellt, wird das signal directoryChanged(const QString &path) ausgelöst. in der Variable path steht nun der Pfad + Name der neuen Datei

                          N Offline
                          N Offline
                          NotYourFan
                          wrote on last edited by
                          #12

                          @j-hilk Verstanden.
                          Was genau soll mir das aber für mein vorhaben bringen? :-O
                          Ich möchte ja nicht detektieren welche Datei erzeugt wurde, dies weis ich schon da die Datei die erzeugt wird immer den selben Namen hat.

                          J.HilkJ 1 Reply Last reply
                          0
                          • N NotYourFan

                            Naja, das ist die nächste Frage.
                            Sobald ich mein Button clicke wird die folgende Funktion ausgeführt:

                            void XYZ::on_serialInteraceButton_clicked()
                            {
                                 executePython("interace.py")
                            }
                            

                            und mein Skript wird dann ebenfalls ausgeführt.
                            Danach (vorausgesetzt mein Skript läuft erfolgreich durch und erzeugt eine JSON-Datei) wird eine Datei erzeugt und unter "D:" abgelegt.

                            Was genau soll ich dann mit dem "Signal" anfangen?

                            Weil theoretisch muss ich direkt nach "executePython("interface.py") 30 Sekunden lang überprüfen ob da eine Datei "geändert" worden ist.

                            jsulmJ Offline
                            jsulmJ Offline
                            jsulm
                            Lifetime Qt Champion
                            wrote on last edited by jsulm
                            #13

                            @notyourfan

                            void XYZ::on_serialInteraceButton_clicked()
                            {
                                connect(&filesystemWatcher, SIGNAL(directoryChanged(const QString &), this, mySlot(const QString &));
                                 executePython("interace.py");
                            }
                            
                            void XYZ::mySlot(const QString &path)
                            {
                            // Hier prüfen ob path die Datei ist, die du brauchst
                            }
                            

                            Zusätzlich kannst du noch einen oneshot Timer starten, der nach 30sek abläuft und in dem Slot dann ein disconnect für directoryChanged.

                            https://forum.qt.io/topic/113070/qt-code-of-conduct

                            1 Reply Last reply
                            1
                            • N NotYourFan

                              @j-hilk Verstanden.
                              Was genau soll mir das aber für mein vorhaben bringen? :-O
                              Ich möchte ja nicht detektieren welche Datei erzeugt wurde, dies weis ich schon da die Datei die erzeugt wird immer den selben Namen hat.

                              J.HilkJ Offline
                              J.HilkJ Offline
                              J.Hilk
                              Moderators
                              wrote on last edited by
                              #14

                              @notyourfan eben, vergleich den Namen in Pfad mit dem den du erwartest, wenn sie übereinstimmen ist deine Datei erstellt worden.


                              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                              Q: What's that?
                              A: It's blue light.
                              Q: What does it do?
                              A: It turns blue.

                              1 Reply Last reply
                              0

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved