如何修复我的代码以使其自动化?

Posted

技术标签:

【中文标题】如何修复我的代码以使其自动化?【英文标题】:How do I fix my code so that it is automated? 【发布时间】:2021-08-10 05:03:48 【问题描述】:

我有下面的代码,它将我的标准化 .txt 文件完美地转换为 JSON 文件。唯一的问题是,有时我有超过 300 个文件并手动执行此操作(即更改文件末尾的数字并运行脚本太多且耗时太长。我想自动执行此操作。如您所见的文件驻留在一个folder/directory and I am placing the JSON file in a differentfolder/目录中,但基本上保持命名约定标准化,除了不是以.txt结尾,而是以.json结尾,但前缀或文件名相同且标准化。例如:CRAZY_CAT_FINAL1.TXT, CRAZY_CAT_FINAL2.TXT依此类推,一直到文件 300。如何自动化并保持文件命名约定到位,并将文件读取并输出到不同的文件夹/目录?我试过了,但似乎无法得到这个迭代。任何帮助将不胜感激。

import glob
import time
from glob import glob
import pandas as pd
import numpy as np
import csv
import json

    csvfile = open(r'C:\Users\...\...\...\Dog\CRAZY_CAT_FINAL1.txt', 'r')
    jsonfile = open(r'C:\Users\...\...\...\Rat\CRAZY_CAT_FINAL1.json', 'w')
    
    reader = csv.DictReader(csvfile)
    out = json.dumps([row for row in reader])
    jsonfile.write(out)

****************************************************************************
I also have this code using the python library "requests". How do I make this code so that it uploads multiple json files with a standard naming convention? The files end with a number...

    import requests

#function to post to api

    def postData(xactData):
        url = 'http link'
        headers = 
           'Content-Type': 'application/json',
           'Content-Length': str(len(xactData)),
           'Request-Timeout': '60000'
        
        return requests.post(url, headers=headers, data=xactData)

    #read data
    f = (r'filepath/file/file.json', 'r')
    data = f.read()
    print(data)

    # post data
    result = postData(data)
    print(result)

【问题讨论】:

也许您应该使用os.listdir(r"C:\Users\...\...\...\Dog\")glob.glob(r:\Users\...\...\...\Dog\*.txt') 获取文件夹中的所有文件名,然后使用for-loop 处理所有文件。 【参考方案1】:

使用f-strings?

for i in range(1,301):
    csvfile = open(f'C:\Users\...\...\...\Dog\CRAZY_CAT_FINALi.txt', 'r')
    jsonfile = open(f'C:\Users\...\...\...\Rat\CRAZY_CAT_FINALi.json', 'w')

【讨论】:

你将不得不提供更多关于发生了什么的信息,伙计。我不是读心术,虽然我希望我是:)【参考方案2】:
import time
from glob import glob
import csv
import json
import os

INPATH r'C:\Users\...\...\...\Dog'
OUTPATH = r'C:\Users\...\...\...\Rat'
for csvname in glob(INPATH+'\*.txt'):
    jsonname = OUTPATH + '/' + os.basename(csvname[:-3] + 'json')
    reader = csv.DictReader(open(csvname,'r'))
    json.dump( list(reader), open(jsonname,'w') )

【讨论】:

如何使用 OUTPATH 变量将文件发送到不同的路径?我没有看到它在上面使用。 我还在上面添加了另一个我无法解决的问题——也许你能帮忙?

以上是关于如何修复我的代码以使其自动化?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复我的 keycloak 上的 cors 错误以使其正常工作?

如何更新 cupy/CUDA 以使其再次工作并修复我的 conda 环境?

我如何修复此代码以使其修剪尾随零和小数点

如何更改我的 C++ 代码以使其在 C 中可用?

如何修复我的代码,使其同时包含“保存”和“另存为”功能?

需要帮助修复我的javascript“for循环”以播放音频播放列表[重复]