我想将一个文件复制到另一个文件。根据{{3}}的接受答案,我做了:
def fcopy(src):
dst = os.path.splitext(src)[0] + "a.pot"
try:
shutil.copy(src, dst)
except:
print("Error in copying " + src)
sys.exit(0)
并将其用作:
print(atoms)
for q in range(0, len(atoms), 2):
print(type(atoms[q]))
print(atoms[q], fcopy(atoms[q]))
这在代码中有很多检查,但我希望只要它找到atoms[q]
并不重要。但我得到的结果是:
['Mn1.pot', 'Mn2.pot'] <= result of print(atoms)
<class 'str'> <= result of type(atoms)
Mn1.pot None <= result of print(atoms,fcopy(atoms)).
['Mn3.pot', 'Mn4.pot']
<class 'str'>
Mn3.pot None
['Mn5.pot', 'Mn6.pot']
<class 'str'>
Mn5.pot None
['Mn7.pot', 'Mn8.pot']
<class 'str'>
Mn7.pot None
我期待print(atoms[q], fcopy(atoms[q]))
给我Mn1.pot Mn1a.pot
我仍然是python的初学者,所以如果有人能告诉我这里出了什么问题,那将会很棒。
答案 0 :(得分:1)
您没有收到错误 - 如果您这样做,您会看到打印出Error in copying
消息。
您需要知道的部分是每个Python函数都返回一个值。如果你不告诉Python要返回什么值,Python返回None
。
因此,如果您希望将目标文件返回给调用者,则必须自己执行:
def fcopy(src):
dst = os.path.splitext(src)[0] + "a.pot"
try:
shutil.copy(src, dst)
return dst # this line should be added
except:
print("Error in copying " + src)
sys.exit(0)