1

when I run my programme, in the blank CSV file, there seems to be an one line gap between each product. How do you get rid of that gap? (shown in the first picture)

This is what happens when I fully run my code

This is my original CSV file that contains all the product information. Row A is the GTIN-8 code, row B is the product name, C is the current stock level, D is the re-order stock level, and E is the target stock level (Just to clarify)

This is my code:

import csv
redo='yes'

receipt=open('receipt.txt', 'wt')

stock=open('Stock_.csv', 'rt')
stock_read=csv.reader(stock)

blank_csv=open('Blank_csv_.csv', 'wt')
blank_csv_write=csv.writer(blank_csv)


clothes=(input('\nPlease enter the GTIN-8 code of what you want to purchase: '))
quantity=int(input('\nPlease enter the amount of this product you want to buy: '))

for row in stock_read:
    GTIN=row[0]
    product=row[1]
    current=row[2]
    re_order=row[3]
    target=row[4]

    if clothes==GTIN:
        current=int(current)-quantity
    blank_csv_write.writerows([[GTIN,product,current,re_order,target]])

stock.close()
blank_csv.close()

reorder_receipt=open('receipt.txt', 'wt')

blank_csv2=open('Blank_csv_.csv', 'rt')
blank_csv_read2=csv.reader(blank_csv2)

stock_check=input('Press \"ENTER\" if you want to check the current stock leavels: ')

if stock_check=='':
    for row in blank_csv_read2:
        for field in row:

            GTIN=row[0] 
            product=row[1]
            current=int(row[2])
            re_order=int(row[3])
            target=int(row[4])
            if current<=re_order:
                re_stock=target-current
                reorder_receipt.write(GTIN+' '+product+' '+str(current)+' '+str(re_order)+' '+str(target)+' '+str(re_stock)+'\n')

blank_csv2.close()
reorder_receipt.close()

Thank you in advance!!!!

Mario
  • 55
  • 10
  • Any chance using blank_csv_write.writerow([GTIN,product,current,re_order,target]) instead of writerows fixes the problem? (Notice I removed one pair of brackets) – Christopher Shroba Nov 29 '16 at 18:05

3 Answers3

1

It seems this is a duplicate of THIS issue. I believe the answer there will help you solve your problem. HINT: newline=''

Community
  • 1
  • 1
Keypunch
  • 26
  • 5
0

I didn't dig into your code in much detail, but on first glance it looks like if you want to remove the extra line between each row of data, remove the newline character '\n' from the end of the reorder_receipt.write() function call.

In other words, modify:

reorder_receipt.write(GTIN+' '+product+ ... +str(re_stock)+'\n')

to be:

reorder_receipt.write(GTIN+' '+product+ ... +str(re_stock))

plmcw
  • 113
  • 1
  • 7
0

I guess the problem is with the target=row[4]. May be "target" string is getting an extra \n. So stripping it might solve the problem. target.strip()

Saurav Shanu
  • 171
  • 1
  • 4