Hi, Also, forgot two other examples that are causing me grief:
cur.executemany("INSERT INTO foobar_foobar_files VALUES (?)", [[os.path.relpath(filename, foobar_input_folder)] for filename in filenames]) I've already broken it up using the parentheses, not sure what's the tidy way to break it up again to fit under 80? In this case, the 80-character mark is hitting me around the "for filename" towards the end. and: if os.path.join(root, file) not in previously_processed_files and os.path.join(root, file)[:-3] not in previously_processed_files: In this case, the 80-character mark is actually partway through "previously processed files" (the first occurrence)... Cheers, Victor On Thursday, 28 November 2013 12:57:13 UTC+11, Victor Hooi wrote: > Hi, > > > > I'm running pep8 across my code, and getting warnings about my long lines (> > 80 characters). > > > > I'm wonder what's the recommended way to handle the below cases, and fit > under 80 characters. > > > > First example - multiple context handlers: > > > > with open(self.full_path, 'r') as input, open(self.output_csv, > 'ab') as output: > > > > and in my case, with indents, the 80-character marks is just before the > ending "as output". > > > > What's the standard recognised way to split this across multiple lines, so > that I'm under 80 characters? > > > > I can't just split after the "as input," as that isn't valid syntax, and > there's no convenient parentheses for me to split over. > > > > Is there a standard Pythonic way? > > > > Second example - long error messages: > > > > self.logger.error('Unable to open input or output file - %s. > Please check you have sufficient permissions and the file and parent > directory exist.' % e) > > > > I can use triple quotes: > > > > self.logger.error( > > """Unable to open input or output file - %s. Please check you > > have sufficient permissions and the file and parent directory > > exist.""" % e) > > > > However, that will introduce newlines in the message, which I don't want. > > > > I can use backslashes: > > > > self.logger.error( > > 'Unable to open input or output file - %s. Please check you\ > > have sufficient permissions and the file and parent directory\ > > exist.' % e) > > > > which won't introduce newlines. > > > > Or I can put them all as separate strings, and trust Python to glue them > together: > > > > self.logger.error( > > 'Unable to open input or output file - %s. Please check you' > > 'have sufficient permissions and the file and parent > directory' > > 'exist.' % e) > > > > Which way is the recommended Pythonic way? > > > > Third example - long comments: > > > > """ NB - We can't use Psycopg2's parametised statements here, as > > that automatically wraps everything in single quotes. > > So s3://my_bucket/my_file.csv.gz would become > s3://'my_bucket'/'my_file.csv.gz'. > > Hence, we use Python's normal string formating - this could > > potentially exposes us to SQL injection attacks via the > config.yaml > > file. > > I'm not aware of any easy ways around this currently though - I'm > > open to suggestions though. > > See > > > http://stackoverflow.com/questions/9354392/psycopg2-cursor-execute-with-sql-query-parameter-causes-syntax-error > > for further information. """ > > > > In this case, I'm guessing a using triple quotes (""") is a better idea with > multi-line comments, right? > > > > However, I've noticed that I can't seem to put in line-breaks inside the > comment without triggering a warning. For example, trying to put in another > empty line in between lines 6 and 7 above causes a warning. > > > > Also, how would I split up the long URLs? Breaking it up makes it annoying to > use the URL. Thoughts? > > > > Cheers, > > Victor -- https://mail.python.org/mailman/listinfo/python-list