我正在尝试建立一个关键字工具。为此,我构建了一个python脚本,当您运行它时,它会输出一个CSV文件,其中包含关键字、排名、URL和日期。
我希望运行多个关键字,并且希望将输出保存在不同的文件夹中。
我用我的python脚本创建了5个不同的文件夹,并创建了一个bash文件,该文件使用不同的关键字运行脚本并输出不同的CSV文件。
bash文件如下所示:
#! /bin/bash
/usr/bin/python3 /kw1/rank.py [website] [keyword1]
sleep 30
/usr/bin/python3 /kw2/rank.py [website] [keyword2]
sleep 20
/usr/bin/python3 /kw3/rank.py [website] [keyword3]
sleep 30
/usr/bin/python3 /kw4/rank.py [website] [keyword4]
sleep 25
/usr/bin/python3 /kw5/rank.py [website] [keyword5]
我遇到的问题是,当我运行我的bash文件时,所有的CSV输出都存储在主文件夹中,而不是存储在python脚本所在的特定文件夹中。
我尝试添加>>和location/output.csv或.txt,但输出是在.txt文件中,或者如果它在CSV中,则在一列中。另外,这不是我的python输出,它只是终端在运行python脚本时的输出。
将输出保存为CSV的python代码如下所示
file = datetime.date.today().strftime("%d-%m-%Y")+'-' +keyword + '.csv'
with open(file, 'w+') as f:
writer = csv.writer(f)
writer.writerow(['Keyword' , 'Rank', 'URL' , 'Date'])
writer.writerows(zip( d[0::4], d[1::4] , d[2::4], d[3::4]))
我希望在一个文件夹上运行我的bash文件,但我希望在python脚本所在的特定文件夹中获得脚本输出。
谢谢。
发布于 2019-07-23 19:20:31
打开要写入的文件时使用绝对路径...
import os.path
# PRETEND YOU 'example' folder under C:\
save_to_path = 'C://example//'
name_of_file = input("What is the name of the file: ")
complete_name = os.path.join(save_to_path, name_of_file+".txt")
with open(complete_name, 'w+') as f:
f.write('Hi')
现在您在C:\example\中有了Hi.txt文件
发布于 2019-07-23 19:16:57
您正在打开的文件不包含文件夹,它只是一个文件名:
file = datetime.date.today().strftime("%d-%m-%Y")+'-' +keyword + '.csv'
因此,Python将其解释为相对路径,这意味着它将当前路径添加到其开头。
您很可能从/home/<user>/
运行该程序,因此该文件最终保存在您的主目录中。
有多种方法可以解决这个问题:
将输出文件夹以命令行的形式提供给程序,绝对路径为argument
,
一样
https://stackoverflow.com/questions/57170626
复制