私はcsv(ローカル名で連結)の最初の列からQRコードを生成するPythonスクリプトを書いています。その部分はうまく機能します。 CSVはちょうど3つの列があり、次のようになります。CSVを読み込み、QRコードを作成し、そのファイル名を新しい列に書き込む方法?
ID First Last
144 Jerry Seinfeld
491 George Costanza
104 Elaine Benes
99 Cosmo Kramer
をそして私は、そのファイルを取るID
S(この場合は、「NBC
」)に接頭辞を追加して、QRコードを作成するために、私のPythonスクリプトを使用します新しいフォルダの各レコードに対してそれは少し長いですが、これもすべて正常に動作するようです:
import csv
import qrcode
import os
import shutil
import time
import inquirer
#Identify Timestamp
timestr = time.strftime("%Y%m%d-%H%M%S")
local = 'NBC'
#Load csv
filename = "stackoverflowtest.csv"
#Path to new local folder
localfolder = local
localimagefolder = localfolder+'/image'
localfilefolder = localfolder+'/files'
#Check/create folders based on local
if not os.path.exists(localfolder):
os.makedirs(localfolder)
if not os.path.exists(localimagefolder):
os.makedirs(localimagefolder)
if not os.path.exists(localfilefolder):
os.makedirs(localfilefolder)
#Copy uploaded file to their local's file folder
shutil.copy2(filename, localfilefolder+'/'+local+'-'+timestr+'.csv') # complete target filename given
#Read csv and generate QR code for local+first column of csv
with open(filename, 'rU') as csvfile:
next(csvfile, None) #skip header row
reader = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab)
for i, row in enumerate(reader):
labeldata = row[0] #Choose first column of data to create QR codes
print labeldata
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(local+"-"+labeldata)
qr.make()
img = qr.make_image()
img.save(localimagefolder+"/"+local+"-"+labeldata+".png".format(i)) #Save image
それはNBCのフォルダを作成し、コピーした各csvファイル1つのサブフォルダに、各ID(NBC-144
、NBC-491
、NBC-104
のためのQRコードを作成し、 NBC-99
)。
私が問題に遭遇している部分は、csvを開いて、ファイルパス/ファイル名をcsv(または私が読んだことからcsvのコピー)に書き戻していることです。同じものに)。それは可能ですか?
最も近いのは、ローカルの名前にIDを付加してその列に書き込むことですが、変数を使って同じことをする方法を理解できないようですファイルパス/ファイル名:
import csv
import os
import sys
filename = 'stackoverflowtest.csv'
newfilename = 'stackoverflowtest2.csv'
local = 'NBC'
with open(filename, 'rU') as f:
reader = csv.reader(f)
with open(newfilename, 'w') as g:
writer = csv.writer(g)
for row in reader:
new_row = row[0:] + ['-'.join([local, row[0]])]
writer.writerow(new_row)
ファイルパスとファイル名の列を追加するために、既存のスクリプト内にそのようなことを書くことはできますか?私がしようとするものはすべて、特に同じスクリプトでそれをやろうとすると壊れます。
EDIT:
これは
f=open(newfilename,'r+')
w=csv.writer(f)
for path, dirs, files in os.walk(path):
for filename in files:
w.writerow([newfilename])
はまた、それは別のスクリプトではまだだ、既存のファイルを上書きし、私の最も近い試みです。
@martinueauこんにちは - それは別の言語でこのような何かを書く方が良いでしょう、またはタグので、それをあるので、あなたは、タイトルからのPythonを削除しました/ scriptsは既にそれを知らせていますか? – Ryan
[** _質問にはタイトルに「タグ」が含まれていますか?_ **](https://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-the-titles) 。 – martineau
@martineauああありがとう。この他の助けは素晴らしいでしょう! – Ryan