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

时间:2015-12-23 18:41:27

标签: python error-handling openfiledialog read-write

我有这个python脚本打开一个文件对话框并选择一个文本文件,而不是将其内容复制到另一个文件。

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

任何人都可以帮我解决这个问题吗?

OPenDirectory.py

#!/usr/bin/python

import Tkinter 
import tkFileDialog

''''Open txt files in the selected path '''
def OpenRead():

    Tkinter.Tk().withdraw()
    in_path = tkFileDialog.askopenfile(initialdir = 'C:\Users\LT GM\Downloads', filetypes=[('text files', ' TXT ')])
    readingFile = in_path.read()
    writeFile = open ('copiedFile.txt', 'w')
    writeFile.write(readingFile)
    print " we'r done!!" 
    in_path.close()
    writeFile.close()


if __name__== "__main__":
    OpenRead()

4 个答案:

答案 0 :(得分:2)

您可以使用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所以如果你想要它特别保存在某个地方,你需要传递完整的路径。

答案 1 :(得分:0)

从文件到文件的逐行复制方式:

#!/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”,它将打印传入文件的内容。

答案 2 :(得分:0)

<强> readingFile = in_path.read() 读取文件的内容并将其放在变量readingFile中 假设文件的内容是,例如,hello readFile的值将是hello

<强> destinationFile = readingFile, '.txt' destinationFile是一个元组,值为'&lt;'文件内容'&gt;','。txt' 而是使用 destinationFile = readingFile+'.txt'

这会奏效。但最终结果将不是您所期望的。结果将是一个文件,其名称为阅读文件的内容,内容也相同。更好地指定 destinationFile 中的文件名,例如 destinationFile = 'destfile.txt'

答案 3 :(得分:-1)

为什么不直接使用os和shell copy命令。

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

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