使用python脚本将文件内容复制到另一个文件

使用python脚本将文件内容复制到另一个文件,python,error-handling,openfiledialog,read-write,Python,Error Handling,Openfiledialog,Read Write,我有一个python脚本,它打开一个文件对话框并选择一个文本文件,然后将其内容复制到另一个文件中 当我打开第二个文件时,它仍然是空的 有人能帮我解决这个问题吗 OPenDirectory.py 逐行从一个文件复制到另一个文件的方式: #!/usr/bin/python from os import listdir from os.path import isfile, join def readWrite(): mypath = 'D:\\' files = [f for f

我有一个python脚本,它打开一个文件对话框并选择一个文本文件,然后将其内容复制到另一个文件中

当我打开第二个文件时,它仍然是空的

有人能帮我解决这个问题吗

OPenDirectory.py
逐行从一个文件复制到另一个文件的方式:

#!/usr/bin/python

from os import listdir
from os.path import isfile, join

def readWrite():
    mypath = 'D:\\'
    files = [f for f in listdir(mypath) if isfile(join(mypath, f))]
    for file in files:
        if file.split('.')[1] == 'txt':
            outputFileName = 'out-' + file
            with open(mypath+outputFileName, 'w') as w:
                with open(mypath+file) as f:
                    for l in f:
                        print l
                        w.write(l)

if __name__== "__main__":
    readWrite()
更新:
更新了上面的代码,因此它读取指定目录中的所有txt文件,并将它们复制到其他文件中。你可以随心所欲地玩目录。我还添加了一个“print l”,它将打印传入文件的内容。

您可以使用
shutil.copyfile
,无需打开或读取该文件

from shutil import copyfile

copyfile("source","dest")
因此,对于您的代码:

 def OpenRead():
    Tkinter.Tk().withdraw()
    in_path = tkFileDialog.askopenfile(initialdir = 'C:\Users\LT GM\Downloads', filetypes=[('text files', ' TXT ')])
    copyfile(in_path.name, 'copiedFile.txt')
    print " we'r done!!"
if __name__== "__main__":
    OpenRead()

文件也将被复制到您的pwd,因此如果您想将其保存在某个特定位置,您需要传递完整路径。

readingFile=in_path.read()
读取文件的内容并将其放入变量readingFile中 假设文件的内容是,比如说,hello,readingFile的值将是hello

destinationFile=readingFile,'.txt'
destinationFile是具有值“”和“.txt”的元组 改为使用destinationFile=readingFile+'.txt'


这会奏效的。但是最终的结果将不是您所期望的。结果将是一个文件,其名称与读取文件的内容相同。最好在destinationFile中指定一个文件名,比如
destinationFile='destfile.txt'
为什么不直接使用os和shell copy命令呢

import os 
start= '~/user/file'
dest= '~/user/folder1/file'

os.system('cp %s %s' %(start,dest))

那么如何将读取文件的内容放入目标文件中呢?这对我来说很好“导入Tkinter导入tkFileDialog”“在所选路径中打开txt文件”“def OpenRead():Tkinter.Tk().draw(),in_path=tkFileDialog.askopenfile(initialdir='C:\Users\LT GM\Downloads',filetypes=[('text files','txt'))readingFile=in\u path.read()writeFile=open('copiedFile.txt','w')writeFile.write(readingFile)在\u path.close()writeFile.close()中打印“we'r done!!”,如果name\uuuu==“\uu main”:OpenRead()“什么对您来说很好?”??copiedFile在这里仍然是空的,那么我在这里缺少什么呢?我也尝试了你的代码,但是copiedFile.txt仍然是空的empty@Jihad3aramouni你知道那是什么吗?因为您传入的文件是空的。这会复制您打开的任何文件,但如果文件为空@Padraic Cunningham,则没有太多可复制的内容用户选择的文件及其保存在变量中的\u path it not empty文件大小为144 kb,因此逻辑是为copiedFile.txt获取相同的大小,对吗??因为也许我没抓住重点here@Jihad3aramouni,您打开的任何文件都将被复制到目标,因此唯一不会发生的方法是如果您传入的文件为空,您在哪里查找该文件?复制的文件与源文件位于同一位置,我已将该文件的内容打印到控制台,并且该文件的默认非空项指定了输出文件的完整路径,例如,
writeFile=open('c:\\copiedFile.txt','w')
。生成的文件仍然是空的吗?我更新了答案,让它读取指定目录中的所有txt文件并进行复制。我使用了您的代码,它读取和写入了文件,但没有复制或写入其内容。第二个文件您的操作方式肯定有问题。。对我和其他人都有类似的效果。@empix我解决了这个问题,我不知道到底是什么问题,但我改变了通行证,它成功了。。。我的第二个问题是关于这个基于字符串的文件的类型……谢谢,太棒了,没问题:)因为我需要熟悉这个程序,如果我理解你的question@Jihad3aramouni你所说的熟悉是什么意思?这将获取一个文件,并将其复制到您希望的任何位置,以及您希望为其指定的任何名称。这一切都是在python中完成的,因此最终用户不必看到它,即使他们看到了,这也是非常自我解释的:cp。您只需要将其添加到循环中。
import os 
start= '~/user/file'
dest= '~/user/folder1/file'

os.system('cp %s %s' %(start,dest))