Home > other >  If the csv file is more than 3 lines, edit it to delete the first line (Not save as new file)
If the csv file is more than 3 lines, edit it to delete the first line (Not save as new file)

Time:04-13

Im trying to code if the csv file is more than 3 lines, edit it to delete the first line.

I want to delete the first line from the existing file instead of saving it as a new file.

For this reason, I had to delete the existing file and create a file with the same name but only one line is saved and the comma disappears.

I'm using Pandas data frame. But if it doesn't matter if I don't use it, I don't want to use it

Function name might be weird because I'm a beginner

Thanks.

file = open("./csv/selllist.csv", encoding="ANSI")
reader = csv.reader(file)
lines= len(list(reader))


if lines > 3:
    df = pd.read_csv('./csv/selllist.csv', 'r ', encoding="ANSI")
    dfa = df.iloc[1:]
    
    print(dfa)

    with open("./csv/selllist.csv", 'r ', encoding="ANSI") as x:
        x.truncate(0)
    with open('./csv/selllist.csv', 'a', encoding="ANSI", newline='') as fo:  
        # Pass the CSV  file object to the writer() function
        wo = writer(fo)
        # Result - a writer object
        # Pass the data in the list as an argument into the writerow() function
        wo.writerow(dfa)  
        # Close the file object
        fo.close()
print()

This is the type of csv file I deal with

string, string, string, string, string
string, string, string, string, string 
string, string, string, string, string
string, string, string, string, string 

CodePudding user response:

With pandas, you can just specify header=None while reading and writing:

if lines > 3:
    df = pd.read_csv("data.csv", header=None)
    df.iloc[1:].to_csv("data.csv", header=None, index=None)

CodePudding user response:

Take a 2-step approach.

Open the file for reading and count the number of lines. If there are more than 3 lines, re-open the file (for writing) and update it.

For example:

lines = []
with open('./csv/selllist.csv') as csv:
  lines = csv.readlines()
if len(lines) > 3:
  with open('./csv/selllist.csv', 'w') as csv:
    for line in lines[1:]: # skip first line
      csv.write(line)
  • Related