import tempfile
import shutil
temp_ = tempfile.mkdtemp()
class ListView_(Screen):
def Image_(self, path):
global image_file_path
file_path = shutil.copy2(path[0], temp_)
在python 3中 file_path输出是"路径"
在python 2中 file_path输出是"无" 那么如何在临时目录中获取新文件的路径
答案 0 :(得分:1)
shutil
附带源代码,因此您可以查看python 3版本并进行修改。
如果比较Python 2.7&的shutil.copy2
方法。 3.4,您将注意到3.4版本中的新return dst
。这是一个新功能,在python 2中没有。
shutil.copy2
方法中有趣的行是:
if os.path.isdir(dst):
dst = os.path.join(dst, os.path.basename(src))
这意味着如果temp_
是一个目录,那么target是源的目录/ basename,否则保持原样,因此在此代码之后,dst
始终是目标文件名,并且open(dst,"wb')
将有效。
所以要使你的代码与python 2& 3(这是可能的好事),您可以通过使用三元表达式来计算实际文件路径目标,然后直接在shutil
中使用它(为什么再次传递目录?) :
file_path = os.path.join(_temp, os.path.basename(src)) if os.path.isdir(temp_) else temp_
shutil.copy2(path[0], file_path) # ignore return code