代码适用于一个功能,但不适用于两个功能
Code works with one function, but not with two functions
我的问题是,如果我使用两个函数,则此代码不接受两个输入参数。
我也尝试在第二个函数中插入和删除点击命令和点击选项,但我总是发现主应用程序要求额外的参数(需要给出 2)或者代码是不执行第二个功能。 ( "add_new_column" )
我哪里做错了?
import pandas as pd
@click.command()
@click.option('--infile', prompt='Your input TSV filename', help='Write your tab separated value filename.')
@click.option('--out', prompt='Your output CSV filename', help='Write your new comma separated value filename.')
def convert_tsv_to_csv(infile, out):
"""Converting a Tab Separated Value into a Comma Separated Value for given files in cli arguments"""
df = pd.read_csv(infile, delimiter='\t')
df.to_csv(out, sep=',')
# @click.command()
# @click.option('--out', prompt='Your output CSV filename', help='Write your new comma separated value filename.')
# def add_new_column(out):
# """Adding a new column named "price_edited" """
# df = pd.read_csv(out, delimiter=',')
# # this line creates a new cloned column from price column, which is a Pandas series.
# # we then add the series to the dataframe, which holds our parsed CSV file
# df['price_edited'] = df['price']
# # save the dataframe to CSV
# df.to_csv(out, sep=',')
if __name__ == '__main__':
convert_tsv_to_csv()
#add_new_column()```
第二次尝试:
import click
import pandas as pd
@click.command()
@click.option('--infile', prompt='Your input TSV filename', help='Write your tab separated value filename.')
@click.option('--out', prompt='Your output CSV filename', help='Write your new comma separated value filename.')
def convert_tsv_to_csv(infile, out):
"""Converting a Tab Separated Value into a Comma Separated Value for given files in cli arguments"""
df = pd.read_csv(infile, delimiter='\t')
df.to_csv(out, sep=',')
def add_new_column():
"""Adding a new column named "price_edited" """
df = pd.read_csv(out, delimiter=',')
# this line creates a new cloned column from price column, which is a Pandas series.
# we then add the series to the dataframe, which holds our parsed CSV file
df['price_edited'] = df['price']
# save the dataframe to CSV
df.to_csv(out, sep=',')
if __name__ == '__main__':
convert_tsv_to_csv()
add_new_column()
你的困惑在于对Click的作用有误解。单击用于解析命令行,然后 运行 按照命令行指定的方式运行。
在此处显示的示例中,从命令行的角度来看,您只需要一个函数。也就是说程序每次都会做同样的事情 运行。所以你只需要一键功能。
但是我有两件事要做!
将工作分成两个函数当然是有意义的,但是这两个函数需要从单击函数中调用,如下所示:
import pandas as pd
import click
@click.command()
@click.option('--infile', prompt='Your input TSV filename',
help='Write your tab separated value filename.')
@click.option('--out', prompt='Your output CSV filename',
help='Write your new comma separated value filename.')
def cli(infile, outfile):
convert_tsv_to_csv(infile, outfile)
add_new_column(outfile)
def convert_tsv_to_csv(infile, out):
"""Converting a Tab Separated Value into a Comma Separated Value
for given files in cli arguments"""
df = pd.read_csv(infile, delimiter='\t')
df.to_csv(out, sep=',')
def add_new_column(out):
"""Adding a new column named "price_edited" """
df = pd.read_csv(out, delimiter=',')
# this line creates a new cloned column from price column, which
# is a Pandas series. We then add the series to the dataframe,
# which holds our parsed CSV file
df['price_edited'] = df['price']
# save the dataframe to CSV
df.to_csv(out, sep=',')
if __name__ == '__main__':
cli()
我的问题是,如果我使用两个函数,则此代码不接受两个输入参数。
我也尝试在第二个函数中插入和删除点击命令和点击选项,但我总是发现主应用程序要求额外的参数(需要给出 2)或者代码是不执行第二个功能。 ( "add_new_column" )
我哪里做错了?
import pandas as pd
@click.command()
@click.option('--infile', prompt='Your input TSV filename', help='Write your tab separated value filename.')
@click.option('--out', prompt='Your output CSV filename', help='Write your new comma separated value filename.')
def convert_tsv_to_csv(infile, out):
"""Converting a Tab Separated Value into a Comma Separated Value for given files in cli arguments"""
df = pd.read_csv(infile, delimiter='\t')
df.to_csv(out, sep=',')
# @click.command()
# @click.option('--out', prompt='Your output CSV filename', help='Write your new comma separated value filename.')
# def add_new_column(out):
# """Adding a new column named "price_edited" """
# df = pd.read_csv(out, delimiter=',')
# # this line creates a new cloned column from price column, which is a Pandas series.
# # we then add the series to the dataframe, which holds our parsed CSV file
# df['price_edited'] = df['price']
# # save the dataframe to CSV
# df.to_csv(out, sep=',')
if __name__ == '__main__':
convert_tsv_to_csv()
#add_new_column()```
第二次尝试:
import click
import pandas as pd
@click.command()
@click.option('--infile', prompt='Your input TSV filename', help='Write your tab separated value filename.')
@click.option('--out', prompt='Your output CSV filename', help='Write your new comma separated value filename.')
def convert_tsv_to_csv(infile, out):
"""Converting a Tab Separated Value into a Comma Separated Value for given files in cli arguments"""
df = pd.read_csv(infile, delimiter='\t')
df.to_csv(out, sep=',')
def add_new_column():
"""Adding a new column named "price_edited" """
df = pd.read_csv(out, delimiter=',')
# this line creates a new cloned column from price column, which is a Pandas series.
# we then add the series to the dataframe, which holds our parsed CSV file
df['price_edited'] = df['price']
# save the dataframe to CSV
df.to_csv(out, sep=',')
if __name__ == '__main__':
convert_tsv_to_csv()
add_new_column()
你的困惑在于对Click的作用有误解。单击用于解析命令行,然后 运行 按照命令行指定的方式运行。
在此处显示的示例中,从命令行的角度来看,您只需要一个函数。也就是说程序每次都会做同样的事情 运行。所以你只需要一键功能。
但是我有两件事要做!
将工作分成两个函数当然是有意义的,但是这两个函数需要从单击函数中调用,如下所示:
import pandas as pd
import click
@click.command()
@click.option('--infile', prompt='Your input TSV filename',
help='Write your tab separated value filename.')
@click.option('--out', prompt='Your output CSV filename',
help='Write your new comma separated value filename.')
def cli(infile, outfile):
convert_tsv_to_csv(infile, outfile)
add_new_column(outfile)
def convert_tsv_to_csv(infile, out):
"""Converting a Tab Separated Value into a Comma Separated Value
for given files in cli arguments"""
df = pd.read_csv(infile, delimiter='\t')
df.to_csv(out, sep=',')
def add_new_column(out):
"""Adding a new column named "price_edited" """
df = pd.read_csv(out, delimiter=',')
# this line creates a new cloned column from price column, which
# is a Pandas series. We then add the series to the dataframe,
# which holds our parsed CSV file
df['price_edited'] = df['price']
# save the dataframe to CSV
df.to_csv(out, sep=',')
if __name__ == '__main__':
cli()