Я использую подпроцесс для создания случайного файла из /dev/random с помощью unix dd. Теперь, если я хочу, чтобы выходные данные dd записывались в файл вместо stdout. так вот код, который я использую,
import subprocess
out_fd = open('test_file','w')
def os_system_dd():
global out_fd
out_fd.write("executing the time dd command\n")
cmd_list = ['time','dd','if=/dev/random', 'of=/home/anand/sys_entropy_random', 'bs=1M' ,'count=5']
a = subprocess.Popen(cmd_list,stdout=out_fd)
a.wait()
if __name__ == '__main__':
os_system_dd()
Это не печатает вывод dd в файл, а вместо этого печатает его в stdout. Это особая функциональность команды dd? Или я что-то упускаю из того, как работает подпроцесс?
subprocess.Popen(['time','dd','if=/dev/random', 'of=sys_entropy_random', 'bs=1M' ,'count=5']).communicate()
? - person phihag   schedule 28.09.2011code
a = subprocess.Popen(['time','dd','if=/dev/random', 'of=/home/anand/sys_entropy_random', 'bs=1M','count= 5'],stdout=out_fd)code
и все равно получаю ту же ошибку. Использование Communicat() может решить мою проблему, но я пытался избежать дополнительной явной записи из python. хотя постараюсь обновить. - person Nandhini Anand Jeyahar   schedule 28.09.2011