подпроцесс python.сбой вызова с помощью FileNotFoundError

#python #subprocess

Вопрос:

В моем скрипте python я пытаюсь изменить разрешения csv — файла после завершения записи в него. Но мой подпроцесс.вызов завершается с ошибкой FileNotFoundError: [Errno 2] No such file or directory: 'chmod': 'chmod'

Пожалуйста, помогите мне здесь узнать, что я делаю не так.

Ошибка

 File "/usr/lib64/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'sudo': 'sudo'
 

Код на Python:

 def create_responsecsv(batchid,fname):
        try:
                connection = connect_DB()
                cur = connection.cursor()
                ids = str(batchid)
                sql = "SELECT query here WHERE SOME_ID= " ids
                print(sql)
                cur.execute(sql)
                rows = cur.fetchall()
logging.info('rows',rows)
                if rows:
                        response_filename = fname.replace("RQ","RS")
file_path=cfg.XFBFolderResponse
file_name=response_filename
actual_file=file_path file_name
                        writer = csv.writer(open(cfg.XFBFolderResponse   response_filename,"w"))
                        writer.writerow(['Old Device id','Old Company','New Item id','New Item','Device Type','New Item IP Address','Status'])
                        for x in rows:
                                writer.writerow(x)                                                                                                
                        subprocess.call(['chmod', '0777', actual_file])                                                                                
        except cx_Oracle.Error as e:
                print(e)
 

Ответ №1:

Как насчет chmod ? Почему ты должен бежать subprocess.call(...)

 os.chmod(actual_file, 0o0777)
 

Комментарии:

1. извините, @balderman, это код обслуживания… в чем разница между ними двумя? должен ли я сразу использовать ОС?

2. @raikumardipak если у вас есть встроенное решение на python-какой смысл разветвлять внешний процесс?