关于python 3.x:使用shutil复制文件时出现意外结果

unexpected results while copying file using shutil

我想把一个文件复制到另一个文件。根据这条线索的公认答案,我已经做了:

1
2
3
4
5
6
7
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)

并将其用作:

1
2
3
4
print(atoms)
for q in range(0, len(atoms), 2):
    print(type(atoms[q]))
    print(atoms[q], fcopy(atoms[q]))

这是代码内部的一些检查,但我希望只要找到atoms[q],这就不重要了。但我得到的结果是:

1
2
3
4
5
6
7
8
9
10
11
12
['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

当时我正期待着江户十一〔1〕给我江户十一〔2〕。

我还是一个Python初学者,所以如果有人能告诉我这里出了什么问题,那就太好了。


您不会收到错误消息——如果您看到了,您将看到打印的Error in copying消息。

您需要知道的是,每个python函数都返回一个值。如果不告诉python返回什么值,python将返回None

因此,如果要将目标文件返回给调用者,则必须自己执行:

1
2
3
4
5
6
7
8
9
10
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)