내 회사 스크립트 중 하나를 csh에서 Python으로 변환하는 데 문제가 있습니다. csh 스크립트는 별명이 지정된 명령을 호출하지만 os.system()을 통해 동일한 별칭이 지정된 명령을 호출하면 작동하지 않습니다. foo
이 별칭 명령 인 경우Python 2.3에서 os.system() 한계 극복
그래서 :
CSH 스크립트 (이 작품 실행 foo는) :
foo <argument>
파이썬 (이 오류는 알 수없는 명령 푸 주장 작동하지 않습니다) 내가 t에서 만든 별칭에 액세스 할 수 없습니다 파이썬의 원인이되는 파이썬 스크립트를 실행할 때 발생하는 컨텍스트 스위치의 일종이 있어야 파악
os.system("foo <argument>")
그 껍질. 설명서를 읽은 후 subprocess
에 대해 이 사용 중지되었으며 그 중 subprocess
에 shell
매개 변수가있는 것 같습니다. 문제는 저를 도울 수 있습니다 ... 문제는 내가 Python 2.3을 사용하여 붙어있어 subprocess
isn ' 버전 2.4까지 사용할 수 없습니다.
저는 파이썬에서 별칭을 복제 할 생각이있었습니다. 예를 들어 foo
에 cp
이라는 별칭이 지정되었습니다.
CSH :
alias foo cp
foo file1 file2
파이썬 :
os.system("alias foo cp")
os.system("foo file1 file2")
없음 주사위 없습니다 ... 여기뿐만 아니라 오류 :
sh: line 0: alias: foo: not found
sh: line 0: alias: cp: not found
sh: foo: command not found
내 마지막 도랑 노력의 몇 줄을하는 것입니다 코드는 foo
을 사용하고 파이썬이 호출 할 자신의 CSH 스크립트에 넣습니다. 그러나 이것에 의지하지 않고이 일을 할 수있는 방법이 있다면, 나는 그것에 대해 알고 싶습니다.
미리 감사드립니다.
"os.system이 csh를 사용하게 된 이유는 무엇입니까?" 무식? :) 그냥 명령 줄에 문자열을 전달했다고 생각했습니다. 답변 해 주셔서 감사합니다. 이 문제는 내가 가지고있는 문제를 해결하지만 불행히도 모든 호출이 자체 서브 쉘에서 실행되기 때문에 다른 솔루션을 모두 찾아야 할 것입니다. 'foo' 명령의 성질은 스크립트에서 사용할 다른 것들을로드하므로, os.system 명령이 끝나자 마자 잃어 버리면 작동하지 않습니다. –
그것은 명령 줄에 물건을 전달합니다. 그것은 명령 행의 단일 * 유형 *이 없다는 것입니다.) 후속 명령에 대해 다른 내용을로드하고 전체 내용을 파이썬으로 변환하는 경우, 다른 내용을 먼저 파이썬으로 변환해야합니다.) –