2015-09-10 2 views
3

Я работаю с библиотекой, которая хочет, чтобы я передавал ее данные в виде имени файла. Затем он откроет этот файл и прочитает данные. У меня есть данные в строке, и я не хочу записывать их в файл (потому что я не хочу, чтобы их удалять впоследствии).Пусть строка действует как файл

Есть ли способ преобразовать строку в поток и сгенерировать имя файла, которое позволит моей библиотеке открыть мой поток и получить доступ к содержимому моей строки?

+1

Почему бы не использовать модуль tempfile, который встроен в python? –

+0

Если вы используете Linux, вы можете использовать именованный канал. – jojonas

+1

Если я не пропущу вашу точку, то tempfile.NamedTemporaryFile - это именно то, что вы хотите –

ответ

3
import tempfile 

fh = tempfile.NamedTemporaryFile() # this creates an actual file in the temp directory 
fh.write(my_string) 
print fh.name 
call_other_thing(fh.name) 
fh.close() # file is now deleted 
+0

ehh или просто используйте 'fh.flush()' перед передачей имени ... но да –

+0

Собирался сказать, может быть, случайный флеш, но есть ли гарантировать с помощью флеша, что данные будут записаны? –

+1

Я так думаю ... его работали каждый раз, когда у меня были проблемы с буфером: P (не собираюсь выкапывать доказательство, хотя ... но я не думаю, что он вернется, пока буфер не покраснет) –

Смежные вопросы