Complete example.
import tempfile
with tempfile.NamedTemporaryFile() as temp:
temp.write('Some data')
if should_call_some_python_function_that_will_read_the_file():
temp.seek(0)
some_python_function(temp)
elif should_call_external_command():
temp.flush()
subprocess.call(["wc", temp.name])
Update: As mentioned in the comments, this may not work in windows. Use this solution for windows
Update 2: Python3 requires that the string to be written is represented as bytes, not str, so do instead
temp.write(bytes('Some data', encoding = 'utf-8'))