LingxinMeng hai 9 meses
pai
achega
f6828b6375
Modificáronse 1 ficheiros con 37 adicións e 7 borrados
  1. 37 7
      src/python2/pjibot_delivery/csv-.py

+ 37 - 7
src/python2/pjibot_delivery/csv-.py

@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 import os
 import shutil
+import subprocess
 import time
 import oss2
 
@@ -45,12 +46,41 @@ def parse_csv(data_bag, parse_prefix, local_parse_dir, local_delete_list):
         oss_csv_object_key4 = parse_prefix + csv_file_name4 + '.csv'
         bucket.put_object_from_file(oss_csv_object_key4, local_csv_file_path4)
 
-        # 生成并上传csv之后,调用
-        os.chdir(path2)
-        command1 = './pji_outdoor_real ' + str(local_csv_dir) + '/ ' + str(local_csv_dir) + '/ ' + str(
-            local_csv_dir) + '/trajectory.png ' + bagname
-        logging.info("调用生成pdf 报告命令: %s" % str(command1))
-        os.system(command1)
+        # 生成pdf
+        try:
+            os.chdir(path2)
+            # 构造命令
+            command1 = ['./pji_outdoor_real',
+                        os.path.join(local_csv_dir, ''),  # 注意:这里可能不需要末尾的 '/',取决于程序要求
+                        os.path.join(local_csv_dir, ''),  # 同上
+                        os.path.join(local_csv_dir, 'trajectory.png'),
+                        bagname]
+
+            # 记录调用命令的信息
+            logging.info("调用生成pdf 报告命令: %s" % ' '.join(command1))
+
+            # 使用 subprocess.Popen 执行命令
+            process = subprocess.Popen(command1, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            stdout, stderr = process.communicate()  # 等待命令执行完成
+
+            # 检查是否有输出或错误
+            if stdout:
+                logging.info("命令的标准输出:")
+                logging.info(stdout.decode('utf-8'))  # Python 2 中需要解码
+            if stderr:
+                logging.error("命令的错误输出:")
+                logging.error(stderr.decode('utf-8'))  # Python 2 中需要解码
+
+            # 检查命令是否成功执行
+            if process.returncode == 0:
+                logging.info("命令执行成功")
+            else:
+                logging.error("命令执行失败,退出码: %s" % process.returncode)
+
+        except OSError as e:
+            # 如果更改目录失败或命令不存在等
+            logging.error("在执行过程中发生错误: %s" % e)
+
         oss_csv_object_key5 = parse_prefix + 'report.pdf'
         bucket.put_object_from_file(oss_csv_object_key5, str(local_csv_dir) + '/report.pdf')
         logging.info("pdf 报告生成并上传完成。")
@@ -141,4 +171,4 @@ if __name__ == '__main__':
                         logging.exception("捕获到一个异常: %s" % str(e))
         except Exception as e:
             logging.exception("全局错误处理: %s" % str(e))
-        time.sleep(sleep_time)
+        time.sleep(sleep_time)