使用Katalon Studio的Groovy脚本来实现自动化比较两个文件夹下同名的csv文件是否一致,并将比较结果输出到另一个文件中。要求文件一致时报文件一致的log,不一致时定位到哪个文件的哪一行数据不一致
时间: 2023-12-03 19:42:41 浏览: 14
可以使用Katalon Studio的Groovy脚本来实现自动化比较两个文件夹下同名的csv文件是否一致,并将比较结果输出到另一个文件中。下面是一个示例脚本:
```
import com.opencsv.CSVReader
// 定义比较结果输出文件路径
def resultFilePath = "path/to/result.csv"
// 获取文件夹1和文件夹2下的所有csv文件
def folder1 = new File("path/to/folder1")
def folder2 = new File("path/to/folder2")
def csvFiles1 = folder1.listFiles({ file -> file.name.endsWith(".csv") })
def csvFiles2 = folder2.listFiles({ file -> file.name.endsWith(".csv") })
// 遍历csvFiles1,逐个比较同名的csv文件
for (def csvFile1 : csvFiles1) {
def csvFileName = csvFile1.name
def csvFile2 = csvFiles2.find({ file -> file.name == csvFileName })
if (csvFile2 == null) {
// 文件夹2中不存在同名的csv文件
logWarning("File not found: ${csvFileName}")
continue
}
if (!compareCsvFiles(csvFile1, csvFile2)) {
// 不一致
logError("File not match: ${csvFileName}")
} else {
// 一致
logInfo("File match: ${csvFileName}")
}
}
/**
* 比较两个csv文件是否一致
*/
def compareCsvFiles(csvFile1, csvFile2) {
def reader1 = new CSVReader(new FileReader(csvFile1))
def reader2 = new CSVReader(new FileReader(csvFile2))
def line1, line2
def row = 0
while ((line1 = reader1.readNext()) != null && (line2 = reader2.readNext()) != null) {
row++
if (!Arrays.equals(line1, line2)) {
// 不一致
writeResult(csvFile1.name, csvFile2.name, row)
return false
}
}
if (line1 != null || line2 != null) {
// 行数不一致
writeResult(csvFile1.name, csvFile2.name, row)
return false
}
return true
}
/**
* 将比较结果输出到结果文件中
*/
def writeResult(csvFile1Name, csvFile2Name, row) {
def writer = new FileWriter(resultFilePath, true)
writer.append("${csvFile1Name},${csvFile2Name},${row}\n")
writer.close()
}
```
上述脚本会比较文件夹1和文件夹2下同名的csv文件,如果一致则输出一致的log,如果不一致则输出不一致的log并将比较结果输出到结果文件中。如果文件夹2中不存在同名的csv文件,则输出文件未找到的警告。如果两个csv文件行数不一致或某一行数据不一致,则输出文件不匹配的错误。结果文件中每一行记录格式为:csv文件1名称,csv文件2名称,不一致的行数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![.zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)