\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Theo666} \pdfinfo{ /Title (chap-7.pdf) /Creator (Cheatography) /Author (Theo666) /Subject (Chap\_7 Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{79B352} \definecolor{LightBackground}{HTML}{F6FAF4} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Chap\_7 Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Theo666} via \textcolor{DarkBackground}{\uline{cheatography.com/193738/cs/40335/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Theo666 \\ \uline{cheatography.com/theo666} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 24th September, 2023.\\ Updated 25th September, 2023.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{p{0.4977 cm} x{4.4793 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{File mode}} \tn % Row 0 \SetRowColor{LightBackground} r & Open a file for reading only. The file pointer is placed at the beginning of the file. \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} w & Open a file for writing only. Overwrites the file if the file exists. If the file does not exist, creates a new file. \tn % Row Count 7 (+ 4) % Row 2 \SetRowColor{LightBackground} a & Open a file for appending. The file pointer is placed at the end of the file. If the file does not exist, creates a new file for writing. \tn % Row Count 11 (+ 4) % Row 3 \SetRowColor{white} r+ & Open a file for both reading and writing. The file pointer is placed at the beginning. Overwrites the exsiting content but the new content is shorter than the existing content, the remaining old content will still be present in the file. \tn % Row Count 18 (+ 7) % Row 4 \SetRowColor{LightBackground} w+ & Open a file for both reading and writing. Overwrites the file if it exists. If it does not exist, creates a new file for reading and writing. \tn % Row Count 22 (+ 4) % Row 5 \SetRowColor{white} a+ & Open a file for both reading and writing. The file pointer is placed at the end of the file. If it does not exist, creates a new file for reading and writing. \tn % Row Count 27 (+ 5) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{and so on} \tn % Row Count 28 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{open(file, mdoe) \newline The main difference between the r+ and w+ modes is that w+ overwrites all the content in the file, while r+ keeps the remaining old content intact. \newline To add ew content to the beginning of a file without overwriting the old content, we can save the old content as an object then overwriting and rewrite the old content with 'w+' mode in Python} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.59724 cm} x{4.37976 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Common Escape Sequences}} \tn % Row 0 \SetRowColor{LightBackground} \textbackslash{}n & newline \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \textbackslash{}t & tab \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \textbackslash{}\textbackslash{} & backslash \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \textbackslash{}' & single quote \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \textbackslash{}" & double quote \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \textbackslash{}r & carriage return \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{- \textbackslash{}" \textbackslash{}' \textbackslash{}\textbackslash{} to help us differentiate between characters that have a special meaning in the programming language and characters that are part of the string itself \newline - \textbackslash{}r to move the cursor to the beginning of the current line without moving to the next line. \newline One common use case for \textbackslash{}r is to create progress bars or other types of dynamic text output. To overwrite the previous output and create the illusion of a progress bar that updates in real-time.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.4931 cm} x{3.4839 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Common Functions}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{`readlines(file)`} & read a file and returns them as a list of strings. Each element reprensents a line \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \seqsplit{readline(file)} & read a single line from a file and returns it as a string. The line includes the newline character \textbackslash{}n \tn % Row Count 7 (+ 4) % Row 2 \SetRowColor{LightBackground} read(file) & read a file and returns it as a single string. The resulting string includes all the characters, including \textbackslash{}n \tn % Row Count 11 (+ 4) % Row 3 \SetRowColor{white} \seqsplit{seek(offset)} & change the position of the file handle, which is like a cursor that defines from where the data has to be read or written \tn % Row Count 16 (+ 5) % Row 4 \SetRowColor{LightBackground} next() & retrieve the next item from an iterator \tn % Row Count 18 (+ 2) % Row 5 \SetRowColor{white} \seqsplit{f.write(content)} & write content to a file. \tn % Row Count 20 (+ 2) % Row 6 \SetRowColor{LightBackground} \seqsplit{f.writelines()} & write a list of strings to a file \tn % Row Count 22 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{- readline() returns "" while there's no the next line \newline - `f.seek(offset, from\_what)` offset specifies the number of positions to move, from\_what = c(0, 1, 2) 0 (by default): the beginning of a file; 2 : the end of a file \newline - `f.write()` `f.writelines` they not automatically add \textbackslash{}n at the end of the string or the string element of a list \newline - Read methods systematically return content as string. Similarly, when you use f.write() and f.writelines(), you must provide a string and a list of strings} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{File opening}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\# Method 1 \newline with open(file, mode = ' ') as obejct : \newline ... \newline \newline \#Method 2 \newline object = open(file, mode) \newline object.close() \newline \newline \# open multiple files \newline with open(file1, "r") as f1, open(file2, "w") as f2: \newline ...} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Examples}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\# Iteration of a file using readline() \& while loop \newline with open(file, "r") as filin: \newline line = filin.readline() \newline while line != "": \newline print(line) \newline line = filin.readline() \newline \newline \# keep a line using readline() \& next() \newline with open('file.txt', 'r') as f: \newline line1 = f.readline() \newline next(f) \newline line3 = f.readline() \# return the line after next \newline \newline \# Iteration of a list resturned by readlines() \newline with open(file, "r") as filin: \newline lines = filin.readlines() \# {[}s:f{]} to keep line \newline for line in lines: \newline print(line) \newline \newline \# Iteration directly for a file \newline \# could return error, specially too many strings \newline \# but much more efficient than readlines() \newline with open(file, "r") as filin: \newline for line in filin: \newline print(line) \newline \newline \# change the position \newline with open(file, 'r') as f: \newline f.seek(20) \newline print(f.tell()) \# Prints the new position \newline \newline with open(file, 'r') as f: \newline f.seek(-10, 2) \newline \newline \# writing \newline with open(file, "w") as filout: \newline for element in my\_list: \newline filout.write(f"\{element\}\textbackslash{}n") \newline \newline \# \textbackslash{}r \newline import time \newline total = 10 \newline for i in range(total + 1): \newline progress = i / total {\emph{ 100 \newline bar = '\#' }} i + '-' * (total - i) \newline print(f'Progress: {[}\{bar\}{]} \{progress:.1f\}\%', end='\textbackslash{}r') \newline time.sleep(0.5) \newline print('\textbackslash{}nDone!')} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}