(로컬 이름과 연결된) CSV의 첫 번째 열에서 QR 코드를 생성하는 Python 스크립트를 작성 중이며 해당 부분이 잘 작동합니다. csv로는 세 개의 열을 가지고 다음과 같습니다CSV를 읽고, QR 코드를 만들고, 파일 이름을 새 열에 쓰는 방법?
ID First Last
144 Jerry Seinfeld
491 George Costanza
104 Elaine Benes
99 Cosmo Kramer
그리고 QR 코드를 생성 한 후, 해당 파일을 취하는 ID
의 접두사를 추가 (이 경우 'NBC
')을하고 내 파이썬 스크립트를 사용하여 새 폴더의 각 레코드에 대해 그것은 조금 길다하지만이 모든 것이 또한 잘 작동하는 것 같다 :
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 파일 하나 개의 하위 폴더에, 각 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)
파일 경로 및 파일 이름에 대한 열을 추가하기 위해 기존 스크립트에 이와 비슷한 내용을 쓸 수 있습니까? 내가 시도하는 모든 것은 - 특히 내가 같은 스크립트에서 그것을 시도한다면.
편집 :
이
f=open(newfilename,'r+')
w=csv.writer(f)
for path, dirs, files in os.walk(path):
for filename in files:
w.writerow([newfilename])
는 또한 별도의 스크립트에서 아직 기존 파일을 덮어 내 가장 가까운 시도이다.
@martinueau 안녕 - 그것은 다른 언어로 같은 것을 쓰는 것이 좋습니다 또는 태그 때문입니다 때문에 당신은 제목에서 파이썬을 제거 않았다/scripts 이미 알았습니까? – Ryan
[** _ 질문에 제목에 "태그"를 포함해야합니까? _ **] (https://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) 요약 . – martineau
@martineau 아 감사합니다. 이것에 대한 다른 도움은 아주 좋습니다! – Ryan