首页 \ 问答 \ Python:在目录中创建以“.json”结尾的所有文件的zip文件(Python: Create a zip file of all files ending with “.json” in a directory)

Python:在目录中创建以“.json”结尾的所有文件的zip文件(Python: Create a zip file of all files ending with “.json” in a directory)

假设目录是/ Home / Documents / Test_files。

我想创建一个以“.json”结尾的所有文件的zip文件,如果可能的话删除文件以便只保留zip文件

到目前为止,我已经能够创建给定路径中所有文件的zip文件,但是当我使用行zipf.write(file)它会抛出错误“[Errno 2]没有这样的文件或目录:sample.json” 。 但是,当我使用zipf.write(os.path.join(root, file))它会写入文件,但也会写出我不想要的整个目录路径。

我只是想自己编写文件。 当我使用print file ,似乎print file了正确的文件,所以我不知道为什么我得到文件不存在的错误

目前我的代码如下所示:

def create_zip(path,zipf):
    #path is the directory address (i.e. /Home/Documents/Test_files)
    for root, dirs, files in os.walk(path):
        for file in files:
            if file.endswith(".json"):
                print file
                zipf.write(os.path.join(root, file))
                #zipf.write(file)

我还想在创建zip文件后删除/删除文件以节省空间。

任何关于为什么会发生这种情况的帮助将不胜感激!


Let's say the directory is /Home/Documents/Test_files.

I would like to create a zip file of all the files ending with ".json" and if possible delete the files so that only the zip file is left

So far I have been able to create a zip file of all the files in the given path but when I use the line zipf.write(file) it throws the error "[Errno 2] No such file or directory: sample.json". However when I use zipf.write(os.path.join(root, file)) it does write the files but also the whole directory path which I don't want.

I just want to write the files themselves. When I use print file the correct files seemed to be printed so I don't know why I get the error that the file doesn't exist

Currently my code looks like this:

def create_zip(path,zipf):
    #path is the directory address (i.e. /Home/Documents/Test_files)
    for root, dirs, files in os.walk(path):
        for file in files:
            if file.endswith(".json"):
                print file
                zipf.write(os.path.join(root, file))
                #zipf.write(file)

I would also like to remove/delete the files after creating the zip file to save space.

Any help as to why this is happening would be appreciated!


原文:https://stackoverflow.com/questions/36740683
更新时间:2023-12-28 07:12

最满意答案

好吧,我知道也许我应该把它放在评论中,但对不起,我没有足够的声誉去做。 无论如何我认为你的程序循环不停,因为你的start变量总是为NULL,首先调用函数会导致函数在发现start == NULL为真后调用自身,后续的调用总会导致无休止的递归,因为启动永远是NULL。 你写的这些线是黑洞

   if (start == NULL) {
    start = LoadDeck(NULL);
    newest = start; } 

它不会为启动变量分配任何内容,它只会导致无限递归。


Well, i know maybe i should put this in comment but sorry i don't have enough reputation to do it. Anyway i think your program loops endlessly because your start variable is always NULL, first call to the function is will lead to function to call itself after finding that start == NULL is true, the subsequent calls will always lead to an endless recursion because start is always NULL. these lines you wrote is the black hole:

   if (start == NULL) {
    start = LoadDeck(NULL);
    newest = start; } 

It doesn't assign anything to start variable, it just causes the endless recursion.

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)